我正在尝试使用JPanel的paintComponent()创建一个绘制形状的程序(下面的例子中的一个矩形),但我无法让它工作,也无法发现错误。
代码如下:
import javax.swing.*;
import java.awt.*;
public class RandomRec{
JFrame frame;
public void go(){
frame = new JFrame();
frame.setSize(500,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DrawPanel panel = new DrawPanel();
}
public static void main (String[] args){
class DrawPanel extends JPanel{
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.orange);
g.drawRect(20, 20, 100, 60);
}
}
RandomRec test = new RandomRec();
test.go();
}
}
对此的任何帮助都将非常感激。
谢谢。
* 更新 * 问题已解决!将go()方法移出main方法,添加一个frame.add(面板)并将frame.setVisible(true)移动到go()方法的底部(更具体地说,在添加面板后移动它)框架)已对问题进行了排序。谢谢。
答案 0 :(得分:4)
您的班级DrawPanel
仅限于main
方法的范围,对您的构造函数不可见。
您需要将DrawPanel
移出main
方法,然后将其添加到JFrame
:
frame.add(panel);
此外,最好在添加所有组件后调用frame.setVisible(true)
。
答案 1 :(得分:2)
你实际上从未将面板添加到框架中,因此它永远不可见。你需要像
这样的东西frame.getContentPane().add( panel );
为什么要在main方法中定义drawpanel类?这很奇怪。