У меня есть JMenu
с JMenuItem
, и когда я нажимаю на это, мне нужно, чтобы открыть окно JFrame
или, другими словами, компонент с внутренним JButton
, JTextField
...Открыть окно-всплывающее окно с JMenuItem Java
Как я могу это сделать?
У меня есть JMenu
с JMenuItem
, и когда я нажимаю на это, мне нужно, чтобы открыть окно JFrame
или, другими словами, компонент с внутренним JButton
, JTextField
...Открыть окно-всплывающее окно с JMenuItem Java
Как я могу это сделать?
Вы можете создать 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();
Вы путаете "всплывающие окна" и "окна".
Всплывающее меню обычно отображается при щелчке правой кнопкой мыши по объекту. Всплывающее окно отобразит список действий, которые могут быть выполнены на этом объекте. Например, текстовое поле может иметь «вырезать», «скопировать» и «вставить». Прочтите раздел из руководства Swing по «Bringing Up a Popup Menu» для получения дополнительной информации.
Окно используется для отображения других компонентов Swing в JFrame или JDialog.
Учитывая, что вы вызываете это действие из пункта меню, я думаю, вы, вероятно, захотите создать и отобразить модальный JDialog, а не JFrame или всплывающее окно.
Кроме того, прочитав учебное пособие, прочитайте раздел «Использование менеджеров макетов». Использование пустых макетов - не лучший способ создать диалог.
Если я использую 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
@enfix: вы также можете использовать 'PopupFactory', но в этом случае не создавайте' JFrame', а 'JPanel' вместо этого и добавляйте туда свои компоненты. –