Два JPanels перекрываются? - PullRequest
0 голосов
/ 27 января 2011

Это код, с которым я имею дело: http://pastie.org/1501054 Когда вы запускаете это, по какой-то причине две панели перекрываются.Почему это так?В любом случае, как это исправить?

ActionListener, предоставленный в качестве аргумента, не имеет отношения к этой части программы.

Кроме того, где я могу найти хороший учебник по Swing, использующий Eclipse?

Ответы [ 4 ]

0 голосов
/ 01 января 2013

Да, я вижу, что ярлык предупреждения перекрывает первую строку

Это потому, что вы не указали макет для своей панели содержимого.Вот как вы это исправляете

contentPane.setLayout(new GridLayout(2,1));

добавьте эту строку под

Container contentPane = getContentPane();

, и я думаю, что вы должны изменить панель предупреждений на gridlayout 1 и 1, а не 0 и 1, потому что у вас еще есть 1строка и 1 столбец

0 голосов
/ 27 января 2011

Хотя я не уверен, как вы хотите, чтобы конечный результат выглядел, вот несколько моих советов:

В фрагменте, где вы добавляете панель предупреждения в JFrame

warningPanel.add(warningLabel);
contentPane.add(warningPanel);
pack(); 

contentPane - контейнер, возвращаемый JFrame.getContentPane ()

JFrames по умолчанию использует BorderLayout и т. Д.

contentPane.add(<someComponent>)

идентичен

contentPane.add(<someComponent>, BorderLayout.CENTER)

Вы также добавляете mainPanel таким же образом, и у вас не может быть двух компонентов с одинаковыми ограничениями, поэтому вместо этого установите warningPanel на BorderLayout.NORTH

contentPane.add(warningPanel, BorderLayout.NORTH)

А также удалите вызов pack () в этом фрагменте кода, так как вы вызываете его позже в своем коде.

Надеюсь, это поможет.


PS

Что касается построения графического интерфейса в Eclipse, этот предыдущий вопрос о подключаемых модулях Eclipse GUI Builder может пригодиться.Я не могу говорить за учебники по использованию Swing в Eclipse, но быстрый поиск в Google выкапывает это руководство с использованием проекта Eclipse Visual Editor

0 голосов
/ 27 января 2011

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

Что касается учебников в Eclipse. Я бы предложил использовать Windows Builder pro в Eclipse для создания графического интерфейса Java. Это отличный продукт (бесплатно) и очень хорошая документация на сайте.

0 голосов
/ 27 января 2011

Когда вы говорите, что хотите хороший учебник по Swing для Eclipse, вам нужен конструктор GUI или учебник по Swing? Свинг это все о макетах. Как только вы это поняли, это кусок пирога. Просто начните с макетов потока. Если вы хотите построить GUI, используйте Netbeans. Это невероятно!

Что касается перекрытия, то это не перекрытие, а перезапись. Вы можете иметь только одну панель в BorderLayout.CENTER, месте по умолчанию. Если вы хотите, чтобы они были рядом, сделайте getContentPane().setLayout(new FlowLayout()); Или просто add(panel, BorderLayout.SOUTH)

...