2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java的Swing里怎么new一条线_java – 在JFrame上绘制一条线

java的Swing里怎么new一条线_java – 在JFrame上绘制一条线

时间:2022-04-03 00:57:26

相关推荐

java的Swing里怎么new一条线_java  – 在JFrame上绘制一条线

我正在尝试使用图形2D绘制一条线,但然后该线出现在所有的线上

JFrame中的其他组件因此使它们不可见.我该如何解决这个问题?

这是代码:

import javax.swing.*;

import java.awt.*;

import java.awt.geom.*;

class Success extends JFrame{

public Success(){

JPanel panel=new JPanel();

getContentPane().add(panel);

setSize(450,450);

JButton button =new JButton("press");

panel.add(button);

}

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

Line2D lin = new Line2D.Float(100, 100, 250, 260);

g2.draw(lin);

}

public static void main(String []args){

Success s=new Success();

s.setVisible(true);

}

}

解决方法:

import javax.swing.*;

import java.awt.*;

import java.awt.geom.*;

class Success extends JFrame{

public Success(){

JPanel panel=new JPanel();

getContentPane().add(panel);

setSize(450,450);

JButton button =new JButton("press");

panel.add(button);

}

public void paint(Graphics g) {

super.paint(g); // fixes the immediate problem.

Graphics2D g2 = (Graphics2D) g;

Line2D lin = new Line2D.Float(100, 100, 250, 260);

g2.draw(lin);

}

public static void main(String []args){

Success s=new Success();

s.setVisible(true);

}

}

进一步提示

>在EDT上创建GUI.有关详细信息,请参见Concurrency in Swing.

>按照@nIcEcOw的建议使用JPanel,覆盖paintComponent(Graphics)而不是paint().再次,首先调用super方法.

>不要扩展框架,只使用一个实例.使用pack()根据组件所需的空间设置大小.

标签:graphics2d,java,swing,jframe

来源: https://codeday.me/bug/1002/1840679.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。