Java 在框架上画一条线
我正试图用Java 在框架上画一条线,java,swing,jframe,graphics2d,Java,Swing,Jframe,Graphics2d,我正试图用图形绘制一条线,但随后这条线出现在整个屏幕上 JFrame中的其他组件使其不可见。如何更正此问题 代码如下: import javax.swing.*; import java.awt.*; import java.awt.geom.*; class Success extends JFrame{ public Success(){ JPanel panel=new JPanel(); getContentPane().add(panel);
图形绘制一条线,但随后这条线出现在整个屏幕上
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);
}
}
进一步提示
在EDT上创建GUI。有关更多详细信息,请参阅
使用@nIcEcOw建议的JPanel
,覆盖paintComponent(Graphics)
而不是paint()
。同样,首先调用super
方法
不要扩展框架,只使用一个框架的实例。使用pack()
根据组件所需的空间设置尺寸
进一步提示
在EDT上创建GUI。有关更多详细信息,请参阅
使用@nIcEcOw建议的JPanel
,覆盖paintComponent(Graphics)
而不是paint()
。同样,首先调用super
方法
不要扩展框架,只使用一个框架的实例。使用pack()
根据组件所需的空间设置尺寸
你能给我们一个截图吗?这个问题应该如何解决?你想让你的程序做什么?我不明白,你在JFrame
上画了一条线,然后在JFrame
上添加组件,那么这条线是干什么的,如果你想用组件隐藏它。相反,通过扩展JPanel
并重写paintComponent(…)
来绘制这条线,这样它就可以与其他组件一起可见:-)仅仅为了绘制一条线,不应该简单地重写paint(…)
方法,尝试重写paintComponent(…)
通过在JComponent/JPanel上绘制,当应用程序启动一行并且按钮显示在同一个框架中时,您可以给我们一个屏幕截图吗?该如何纠正该问题?你想让你的程序做什么?我不明白,你在JFrame
上画了一条线,然后在JFrame
上添加组件,那么这条线是干什么的,如果你想用组件隐藏它。相反,通过扩展JPanel
并重写paintComponent(…)
来绘制这条线,这样它就可以与其他组件一起可见:-)仅仅为了绘制一条线,不应该简单地重写paint(…)
方法,尝试重写paintComponent(…)
当应用程序启动一行时,在JComponent/JPanel的顶部绘制,按钮显示在同一帧中
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);
}
}