Domanda

Ho un JMenu con un JMenuItem, e quando clicco su questo, ho bisogno di aprire una JFrame o una finestra, in altre parole, un componente con JButton all'interno, JTextField, ...

Come posso fare questo?

È stato utile?

Soluzione

È possibile creare il JFrame nello stesso modo è stato creato il JFrame iniziale, e la chiamata

setVisible(true);

nel ActionListener del vostro JMenuItem per renderlo visibile quando viene cliccato il menu.


Se si vuole che sia modale (frame originale non è accessibile a meno che la nuova finestra è chiusa), è possibile utilizzare un JDialog invece, l'impostazione modal su true nella funzione di costruzione, o chiamando setModal(true).

Altri suggerimenti

Scrivo in risposta per buona vista codice:

Se io uso un JFrame ho ottenuto questo errore: . "Java.lang.IllegalArgumentException: l'aggiunta di una finestra su un contenitore"

Questo è il mio codice nel metodo 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();

Stai confondendo "pop-up" e "finestre".

Un pop-up è generalmente visualizzato quando si fa clic destro su qualche oggetto. Il popup visualizzerà un elenco di azioni che possono essere eseguite su tale oggetto. Ad esempio, un campo di testo potrebbe avere "taglio", "copia" e "incolla". Leggere la sezione dal tutorial Swing on " allevare un Menu a comparsa " per ulteriori informazioni.

Una finestra viene utilizzata per visualizzare altre componenti Swing in un JFrame o JDialog.

Dato che si sta invocando questa azione da una voce di menu Penso che probabilmente si vuole creare e visualizzare un JDialog modale, non un JFrame o pop-up.

Inoltre, durante la lettura del tutorial, leggere la sezione "Utilizzo di gestori di layout". Utilizzando i layout nulli non è il modo migliore per creare un dialogo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top