「java代码画线」java 画线

博主:adminadmin 2023-03-22 04:44:10 974

今天给各位分享java代码画线的知识,其中也会对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 如何在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);

    }

}

运行结果:

java中在面板上怎么画直线?

方法1:

public static void main(String[] args) {

    //JPanel  p = new JPanel(); 注释掉这句

    JFrame frame = new JFrame("DrawLine");

    frame.add(new DrawLine());//将p对象换成本类

    //因为本类继承了JPanel重写paintComponent进行绘制,是绘制到本类的panel上的,

    //而不是绘制到new Panel()对象

    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);

}

方法2:

//这种方式可能 让你更理解

public static void main(String[] args) {

DrawLine dl = new DrawLine();//新建对象

dl.init();//执行初始化

}

private void init(){

//JPanel  p = new JPanel(); 注释掉这句

JFrame frame = new JFrame("DrawLine");

frame.add(this);//将p对象换成本类

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);

}

用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简单的画线程序

import java.awt.*;

import java.awt.event.*;

import java.util.ArrayList;public class DrawLine extends Frame

implements WindowListener

{

static ArrayList lbArray; DrawLine(){

setBounds(150,150,300,300);

setVisible(true);

Label lb0=new Label("Hello");

addWindowListener(this);

add(lb0);

lb0.setBounds(50,30,40,20);

Label lb1=new Label("World!");

add(lb1);

lb1.setBounds(50,90,40,20); Label lb2=new Label("Java");

add(lb2);

lb2.setBounds(50,150,40,20);

lbArray.add(lb0);

lbArray.add(lb1);

lbArray.add(lb2);

repaint(); }

public void windowClosed(WindowEvent w)

{

System.exit(0);

}

public void windowClosing(WindowEvent w)

{

dispose();

}

public void windowOpened(WindowEvent e) {}

public void windowIconified(WindowEvent e) {}

public void windowDeiconified(WindowEvent e) {}

public void windowActivated(WindowEvent e) {}

public void windowDeactivated(WindowEvent e) {}

public void paint(Graphics g)

{

super.paint(g); if(lbArray.size()=1)

{

g.setColor(Color.red);

int x1,y1,x2,y2;

Label lb=(Label)lbArray.get(0);

Rectangle rc=lb.getBounds();

x1=rc.x+rc.width/2;

y1=rc.y+rc.height/2;

for(int i=1;ilbArray.size();i++)

{

lb=(Label)lbArray.get(i);

rc=lb.getBounds();

x2=rc.x+rc.width/2;

y2=rc.y+rc.height/2;

g.drawLine(x1,y1,x2,y2);

x1=x2;

y1=y2;

}

}

} public static void main(String[] args){

lbArray=new ArrayList(10);

new DrawLine();

}

} 终于做了个满足你要求的东西。要知道我昨天和你说过我并不常用Java。赶快采纳吧。

java怎么画出一条直线呢?高手进吧。

我晕,组件要重绘,就使用paintComponent方法吧,没有什么灵活不灵活的

import java.awt.Color;

import java.awt.EventQueue;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.GridLayout;

import javax.swing.BorderFactory;

import javax.swing.JComponent;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

public class FrameDemo extends JFrame {

private JPanel contentPane;

TestComponent tc1, tc2;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

FrameDemo frame = new FrameDemo();

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public FrameDemo() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(new GridLayout(2, 1, 10, 10));

tc1 = new TestComponent();

tc1.setBorder(BorderFactory.createLineBorder(Color.BLUE));

tc2 = new TestComponent();

tc2.setBorder(BorderFactory.createLineBorder(Color.PINK));

contentPane.add(tc1);

contentPane.add(tc2);

}

}

class TestComponent extends JComponent {

public void paintComponent(Graphics g1) {

Graphics2D g = (Graphics2D) g1;

g.setColor(Color.RED);

g.drawLine(0, 0, this.getWidth(), this.getHeight());

}

}

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