在同一个类的框架中添加类的对象扩展jpanel

时间:2016-03-15 13:22:05

标签: java swing jframe jpanel

我试图创建一个类,当我们在main方法中创建此类的对象时,显示一个青色的窗口

在我的上一个程序中我写了一个类扩展jpanel(例如:Test extends JPanel)然后在主类中我只是在一个框架中添加一个Test对象 但现在我想在测试中做到这一点

通常只是制作Test类的对象我希望在这里看到一个青色窗口是我不完整的代码:

public class BoardFrame extends JPanel {    
    private int rowNumber,columnNumber;
    private JFrame mainFrame;   
    public BoardFrame(int m,int n){ 
        rowNumber = m;
        columnNumber = n;           
        mainFrame = new JFrame();           
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);         
    }


    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setColor(Color.cyan);         
    }
}

1 个答案:

答案 0 :(得分:3)

mainFrame.add(this);

之前,您只需mainFrame.setVisible(true);

如果你想使用g.setColor(Color.cyan);,你必须画一些东西。

使用g.fillRect(0, 0, this.getWidth(), this.getHeight());
或者您可以在构造函数中使用this.setBackground(Color.cyan);

这是您完整的固定代码。试试吧!

public class BoardFrame extends JPanel {

    public static void main(String[] args) {
        new BoardFrame();
    }

    private int rowNumber, columnNumber;
    private JFrame mainFrame;

    public BoardFrame(int m, int n) {
        rowNumber = m;
        columnNumber = n;
        mainFrame = new JFrame();
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      //this.setBackground(Color.cyan); // replaces need for paintComponent
        mainFrame.add(this); // <-- added this line
        mainFrame.setVisible(true);
    }

    public void paintComponent(Graphics g) {
        g.setColor(Color.cyan);
        g.fillRect(0, 0, this.getWidth(), this.getHeight()); // <-- added this line
    }
}