Есть ли способ вызвать setBackgroud () в расширенном классе JPanel - PullRequest
0 голосов
/ 25 января 2019

Я настраиваю симуляцию игры жизни Конвея. Я хотел создать набор ящиков типа «Mybox», который расширяет «JPanel». Внутри каждого из этих ящиков я хотел бы вызвать функцию 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 голосов
/ 25 января 2019

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);
    }
}
...