Открыть окно всплывающее окно от jmenuitem java
Вопрос
у меня есть JMenu
с А. JMenuItem
, и когда я нажимаю на это, мне нужно открыть JFrame
или окно, другими словами компонент с внутри JButton
, JTextField
,...
Как я могу это сделать ?
Решение
Вы можете создать JFrame
Точно так же вы создали свой начальный JFrame
, и вызов
setVisible(true);
в ActionListener
вашей JMenuItem
Чтобы сделать это видимым, когда нажатие меню.
Если вы хотите, чтобы это было модальным (оригинальный кадр не может быть доступен, если новое окно не будет закрыто), вы можете использовать JDialog
Вместо этого установка modal
правда в конструкторе или звонить setModal(true)
.
Другие советы
Я пишу в ответе на хороший вид кода:
Если я использую 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();
Вы запутаете «всплывающие окна» и «Windows».
Всплывание обычно отображается при щелчке правой кнопкой мыши на какой-то объекте. Всплывание отобразит список действий, которые могут быть выполнены на этом объекте. Например, текстовое поле может иметь «вырезать», «скопировать» и «вставить». Прочитайте раздел с учебного пособия по качеству на «Поднимая всплывающее меню" Чтобы получить больше информации.
Окно используется для отображения других компонентов качания в JFrame или JDialog.
Учитывая, что вы вызываете это действие из пункта меню, я думаю, вы, вероятно, хотите создать и отображать модальный jdialog, а не jframe или всплывающее окно.
Также, читая учебное пособие, прочитайте раздел «Использование менеджеров макета». Использование нулевых макетов - это не лучший способ создания диалога.