使用的paintComponent()来绘制矩形的JFrame(Using paintCompone

2019-07-03 20:41发布

我试图创建绘制(下面的例子矩形)使用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();
    }
}

任何帮助将非常感激。

谢谢。

* UPDATE *问题解决了! 移动go()方法从主要方法,增加一个frame.add(面板)和移动所述frame.setVisible(真)到go()方法的底部(更具体地,面板被添加到后移动它框架)已排序的问题。 谢谢。

Answer 1:

您的类DrawPanel仅限于你的范围main方法是不可见的,你的构造。

你需要移动DrawPanel出你的main方法,然后将它添加到你JFrame

frame.add(panel);

此外,更好地调用frame.setVisible(true)已添加的所有组件后。



Answer 2:

你从来没有真正加入面板框架,所以这是从来没有看见。 你需要像

frame.getContentPane().add( panel );

为什么你定义的主要方法里面drawpanel类? 这是相当奇怪的。



文章来源: Using paintComponent() to draw rectangle in JFrame