是否可以在已存在的JPanel类中调用setBackgroud()

时间:2019-01-24 22:04:25

标签: java jframe jpanel

我正在模拟Conway的生活游戏。我想创建一组扩展为“ JPanel”的“ Mybox”类型的盒子。在每个这些框的内部,我想在程序启动时调用SetBackground()函数。这是Ive最接近使其正常工作的地方

package conwaysGameOfLife;

import java.awt.Color;
import java.awt.Panel;

import javax.swing.JPanel;

public class MyBox extends JPanel{
    public void setBackground(Color color){
        super.setBackground(color);
    }
    public static void main(String[] args) {
        setBackground(Color.white);
    }
}

输入此命令时,我收到错误消息,告诉我将setBackground()设为静态,但是在执行此操作时,在supper关键字下却收到错误消息。

1 个答案:

答案 0 :(得分:0)

setBackground()不应为静态。 在main()中,您需要创建一个MyBox实例并使用该实例:

MyBox box = new MyBox();
box.setBackground( Color.red );

例如:

public class MyBox extends JPanel{

    public MyBox() {
         this( Color.GREEN );
    }

    public MyBox(Color color){
        setBackground(color);
    }

    public static void main(String[] args) {
        // Create an instance with green background
        // using the default constructor:
        MyBox greenBox = new MyBox();

        // or use the other constructor 
        MyBox redBox = new MyBox(Color.RED);
        // then later you can change the color:
        redBox.setBackground(Color.white);
    }
}