Невозможно изменить цвет фона JFrame ContentPane

Итак, у меня есть программа-змейка на java, работает отлично, однако в моем классе Frame я не могу изменить цвет фона панели содержимого JFrame, я использую getContentPane().setBackground(Color.DARK_GRAY);, но она не работает, какая-нибудь помощь?

Вот мой класс Frame:

package mainpackage;

import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JFrame;

public class Frame extends JFrame {

    private static final long serialVersionUID = 1L;

    public Frame() {

        getContentPane().setBackground(Color.BLACK); \\NOT WORKING !!
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Snake by Sarp~");
        setResizable(false);
        init();
    }

    public void init() {
        setLayout(new GridLayout(1, 1, 0, 0));


        Screen s = new Screen();
        add(s);

        pack();

        setLocationRelativeTo(null);
        setVisible(true);
    }

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

}

person Coder    schedule 27.11.2016    source источник


Ответы (1)


setLayout(new GridLayout(1, 1, 0, 0));

С помощью вышеупомянутого менеджера компоновки любой компонент (компоненты), который вы добавляете во фрейм, будет полностью закрывать панель содержимого.

Screen s = new Screen();
add(s);

Вы можете установить фон области содержимого, но тогда вы добавите компонент в область содержимого. Таким образом, вы увидите цвет компонента Screen поверх панели содержимого.

Установите цвет вашего объекта Screen таким, какой вы хотите:

s.setBackground( Color.BLACK );
person camickr    schedule 27.11.2016
comment
@YoungMillie, это моя точка зрения. Он добавляет компонент верхней части панели содержимого. - person camickr; 27.11.2016