使用paintComponent()在JFrame中绘制矩形

pri*_*oyd 5 java swing jpanel jframe paintcomponent

我正在尝试使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将非常感激.

谢谢.

*更新*问题解决了!将go()方法移出main方法,添加一个frame.add(面板)并将frame.setVisible(true)移动到go()方法的底部(更具体地说,在添加面板后移动它)框架)已对问题进行了排序.谢谢.

Rei*_*eus 4

您的类DrawPanel仅限于您的main方法的范围内,并且对您的构造函数不可见。

您需要移出DrawPanel您的main方法,然后将其添加到您的JFrame

frame.add(panel);
Run Code Online (Sandbox Code Playgroud)

frame.setVisible(true)另外,最好在添加所有组件后调用。