欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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

发布时间:2023/12/3 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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/20191002/1840679.html

总结

以上是生活随笔为你收集整理的java的Swing里怎么new一条线_java – 在JFrame上绘制一条线的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。