「javaawt画线」Java画线

博主:adminadmin 2022-12-27 07:21:07 49

今天给各位分享javaawt画线的知识,其中也会对Java画线进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 如何在JPanel上画线

可以定义全局的变量来保存Graphics。

在组件处于可见的状态下使用getGraphics。代码如下:

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class J extends JFrame implements KeyListener{

 Graphics g=null;//全局变量

 JPanel jp=new JPanel();

 

 public J()

 {

  add(jp);

  setSize(100, 100);

  setVisible(true);//必须放在getGraphics之前

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  g=jp.getGraphics();

  if(g==null)

  {

   System.out.println("NULL");

  }

  this.addKeyListener(this);

  

 }

 

 static public void main(String []agr){

  new J();

 }

 @Override

 public void keyPressed(KeyEvent e) {

  // TODO Auto-generated method stub

  System.out.println("draw");

  g.drawLine(0, 0, 50, 50);

 }

 @Override

 public void keyReleased(KeyEvent e) {

  // TODO Auto-generated method stub

  

 }

 @Override

 public void keyTyped(KeyEvent e) {

  // TODO Auto-generated method stub

  

 }

}

java如何画直线?

这个简单

可以调用方法drawline(int x1, int y1, int x2, int y2)

其中(x1, y1), (x2, y2)分别为直线起点和终点的坐标

特意给你写了个小例子,希望能帮到你

***************************************

import javax.swing.*;

import java.awt.*;

public class DrawLine extends JPanel {

public static void main(String[] args) {

JFrame frame = new JFrame("DrawLine");

frame.getContentPane().add(new DrawLine());

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300, 200);

frame.setVisible(true);

}

protected void paintComponent(Graphics g) {

super.paintComponent(g);

g.drawLine(50, 50, 200, 250);

}

}

****************************

将程序复制到记事本中并改名为DrawLine.java(注意大小写)

然后在命令行中用 CD+文件夹 使命令范围到DrawLine.java的文件夹中

然后执行命令javac DrawLine.java

再执行命令java DrawLine

你会看到结果

用Java小程序实现对已知起点和终点的直线的绘制,过程中需要注意哪些问题

java程序绘制直线 也数学里一样, 也是需要两个点即可实现;

直角坐标系和屏幕坐标系不一样: 为了能够正确的显示出来,那么就要确保直线在JPanel等容器的可见范围内,如果点的坐标有负数, 或者 超过了容器的最大尺寸, 那么就无法正确的全部显示出来

2.awt/swing里面直线的坐标,是int类型的整数, 不支持小数

数学里P(2.8,6.7)可以,在awt/swing里就不支持

3.  javaFX支持坐标用小数表示

用JAVA实现画线,不是直线,而是点住鼠标左键划到哪里哪里就画线,就

import java.awt.BasicStroke;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Label;

import java.awt.Panel;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class MouseDrawPanel extends Frame

{

private static final long serialVersionUID = 1L;

MouseEvent e = null;

int startX = -1;

int startY = -1;

int endX = -1;

int endY = -1;

boolean left = false;

public MouseDrawPanel ( String title )

{

setTitle (title);

setLayout (new BorderLayout ());

setResizable (false);

setSize (500, 400);

setLocationRelativeTo (null);

addWindowListener (new WindowAdapter ()

{

@Override

public void windowClosing ( WindowEvent e )

{

System.exit (0);

}

});

}

@Override

public void paintComponents ( Graphics g )

{

float lineWidth = 8.0f;

( (Graphics2D) g ).setStroke (new BasicStroke (lineWidth));

g.setColor (Color.YELLOW);

g.drawLine (startX, startY, endX, endY);

g.dispose ();

}

public static void main ( String[] args )

{

final MouseDrawPanel mdp = new MouseDrawPanel ("Use Mouse Draw");

Panel panel = new Panel ();

panel.setLayout (new FlowLayout (FlowLayout.LEFT));

Label startL = new Label ("start: ");

Label endL = new Label ("end: ");

final Label nowL = new Label ("now: ");

final Label startR = new Label ("000,000");

final Label endR = new Label ("000,000");

final Label nowN = new Label ("000,000");

panel.add (startL);

panel.add (startR);

panel.add (endL);

panel.add (endR);

panel.add (nowL);

panel.add (nowN);

mdp.add (panel, "South");

mdp.addMouseMotionListener (new MouseMotionListener ()

{

@Override

public void mouseMoved ( MouseEvent e )

{

if (mdp.left)

{

nowN.setText (e.getX () + " , " + e.getY ());

}

}

@Override

public void mouseDragged ( MouseEvent e )

{

if (mdp.left)

{

mdp.endX = e.getX ();

mdp.endY = e.getY ();

mdp.paintComponents (mdp.getGraphics ());

mdp.startX = mdp.endX;

mdp.startY = mdp.endY;

endR.setText (mdp.endX + " , " + mdp.endY);

}

}

});

mdp.addMouseListener (new MouseAdapter ()

{

@Override

public void mousePressed ( MouseEvent e )

{

if (e.getButton () == MouseEvent.BUTTON1)

{

mdp.startX = e.getX ();

mdp.startY = e.getY ();

startR.setText (mdp.startX + " , " + mdp.startY);

mdp.left = true;

}

else

{

mdp.left = false;

}

}

@Override

public void mouseReleased ( MouseEvent e )

{

if (mdp.left)

{

endR.setText (e.getX () + " , " + e.getY ());

}

}

});

mdp.setVisible (true);

}

}

java 如何在jpanel上画垂直线、水平线、平行线?

定义一个类继承JPanel类,重写 JPanel 的 paint 方法,使用 Graphics 绘制线段,如下代码:

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JFrame;

import javax.swing.JPanel;

class MyPanel extends JPanel {

@Override

public void paint(Graphics g) {

super.paint(g);

g.setColor(Color.RED);

for (int i = 0; i  10; i++) {

g.drawLine(10, 10 + i * 20, this.getWidth() - 10, 10 + i * 20);

}

for (int i = 0; i  10; i++) {

g.drawLine(10 + i * 20, 10, 10 + i * 20, this.getHeight() - 10);

}

}

}

public class App extends JFrame {

public App() {

this.setSize(400, 400);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

MyPanel panel = new MyPanel();

this.add(panel, BorderLayout.CENTER);

}

public static void main(String[] args) {

       new App().setVisible(true);

    }

}

运行结果:

javaawt画线的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java画线、javaawt画线的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。