2010-05-05 6 views

ответ

1

Вы можете создать JFrame таким же образом, вы создали свой первоначальный JFrame и вызовите

setVisible(true); 

в ActionListener вашего JMenuItem, чтобы сделать его видимым, когда меню нажата.


Если вы хотите, чтобы быть модальными (исходный кадр не доступен, если новое окно не закрывается), вы можете использовать вместо JDialog, установив modal истину в конструкторе, или позвонив по телефону setModal(true).

+0

Если я использую JFrame, я получил эту ошибку: «java.lang.IllegalArgumentException: добавление окна в контейнер». Это мой код в действииПереформированный метод: PopupFactory factory = PopupFactory.getSharedInstance(); JFrame frame = new JFrame(); frame.setLayout (null); frame.setBounds (428, 99, 185, 155); final JButton button = new JButton(); button.setText ("Button"); button.setBounds (10, 93, 111, 25); frame.getContentPane(). Add (кнопка); final Popup popup = factory.getPopup (null, frame, 200, 200); popup.show(); – enfix

+0

@enfix: вы также можете использовать 'PopupFactory', но в этом случае не создавайте' JFrame', а 'JPanel' вместо этого и добавляйте туда свои компоненты. –

0

Я пишу в ответ на хороший вид кода:

Если я использую JFrame я получил эту ошибку: «java.lang.IllegalArgumentException: добавление окна в контейнер».

Вот мой код в методе actionPerformed:

PopupFactory factory = PopupFactory.getSharedInstance(); 
JFrame frame = new JFrame(); 
frame.setLayout(null); 
frame.setBounds(428, 99, 185, 155); 

final JButton button = new JButton(); 
button.setText("Button"); 
button.setBounds(10, 93, 111, 25); 
frame.getContentPane().add(button); 

final Popup popup = factory.getPopup(null, frame, 200, 200); 
popup.show(); 
0

Вы путаете "всплывающие окна" и "окна".

Всплывающее меню обычно отображается при щелчке правой кнопкой мыши по объекту. Всплывающее окно отобразит список действий, которые могут быть выполнены на этом объекте. Например, текстовое поле может иметь «вырезать», «скопировать» и «вставить». Прочтите раздел из руководства Swing по «Bringing Up a Popup Menu» для получения дополнительной информации.

Окно используется для отображения других компонентов Swing в JFrame или JDialog.

Учитывая, что вы вызываете это действие из пункта меню, я думаю, вы, вероятно, захотите создать и отобразить модальный JDialog, а не JFrame или всплывающее окно.

Кроме того, прочитав учебное пособие, прочитайте раздел «Использование менеджеров макетов». Использование пустых макетов - не лучший способ создать диалог.

Смежные вопросы