Пустой макет Java приводит к пустому экрану - PullRequest
2 голосов
/ 05 мая 2011

Когда я пытаюсь использовать setLayout (null), я получаю простой серый экран, и ни один из моих компонентов не присутствует.Нужно ли давать каждому компоненту в ColorPanel значение x, y?

import javax.swing.*;
import java.awt.*;

public class GUI{

    public static void main(String[] args){
        JFrame GUI = new JFrame();
        GUI.setLayout(null);
        GUI.setTitle("Betrai");
        GUI.setSize(500, 500);
        GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ColorPanel panel = new ColorPanel(Color.white);
        Container pane = GUI.getContentPane();
        JButton continueButton = new JButton("TEST");
        continueButton.setBackground(Color.red);
        continueButton.setBounds(10, 10, 60, 40);
        pane.add(continueButton);
        GUI.setVisible(true);
        GUI.setBounds(0, 0, 500, 500);
        GUI.setResizable(false);
    }
}

Ответы [ 2 ]

5 голосов
/ 05 мая 2011

Я попробовал код и вижу вашу кнопку, как вы указали!

Вам нужно добавить ColorPanel к макету и установить границы (так же, как вы сделали для кнопки тестирования).

    panel.setBounds(50, 50, 100, 100);
    pane.add(panel);

Но вы не должны использовать null макет. Почти всегда есть другой макет, который может удовлетворить ваши потребности!

2 голосов
/ 05 мая 2011

Когда вы используете null для менеджера макета, вы говорите Swing, что хотите сделать абсолютное позиционирование.Правила абсолютного позиционирования заключаются в том, что вы должны установить границы для каждого компонента, который вы добавляете в Контейнер, прежде чем добавить его.

Здесь вы найдете канонический пример использования Oracle без менеджера компоновки.http://download.oracle.com/javase/tutorial/uiswing/layout/none.html

Обратите внимание, вы должны обернуть все следующим образом:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        ... GUI creation stuff here ...
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...