Come domare la X sulle scatole JOptionPane dialogo?
-
27-09-2019 - |
Domanda
Inoltre, in questo momento ogni volta che clicco il tasto 'X" in alto a destra, le si comporta finestre di dialogo, come se dopo aver cliccato OK (su messaggi) o YES (su domande). Quando l'utente fa clic sul X, voglio DO_Nothing.
Nel codice qui sotto, quando scatto sulla X nella finestra di dialogo, si apre il 'mangia!'. A quanto pare, la X sta agendo come 'SI' opzione, che non dovrebbe.
int c =JOptionPane.showConfirmDialog(null, "Are you hungry?", "1", JOptionPane.YES_NO_OPTION);
if(c==JOptionPane.YES_OPTION){
JOptionPane.showMessageDialog(null, "eat!", "Order",JOptionPane.PLAIN_MESSAGE);
}
else {JOptionPane.showMessageDialog(null, "ok cool", "Order",JOptionPane.PLAIN_MESSAGE);}
Soluzione
in modo da mostrare come ignorare il pulsante Annulla nella finestra di dialogo per OP chiarimento della domanda:
JOptionPane pane = new JOptionPane("Are you hungry?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
JDialog dialog = pane.createDialog("Title");
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
}
});
dialog.setContentPane(pane);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dialog.pack();
dialog.setVisible(true);
int c = ((Integer)pane.getValue()).intValue();
if(c == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, "eat!", "Order",JOptionPane.PLAIN_MESSAGE);
}
else if (c == JOptionPane.NO_OPTION) {
JOptionPane.showMessageDialog(null, "ok cool", "Order",JOptionPane.PLAIN_MESSAGE);
}
Altri suggerimenti
Non si può fare ciò che si vuole attraverso la consueta JOptionPane.show * metodi di.
Si deve fare qualcosa di simile:
public static int showConfirmDialog(Component parentComponent,
Object message, String title, int optionType)
{
JOptionPane pane = new JOptionPane(message, JOptionPane.QUESTION_MESSAGE,
optionType);
final JDialog dialog = pane.createDialog(parentComponent, title);
dialog.setVisible(false) ;
dialog.setLocationRelativeTo(parentComponent);
dialog.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
dialog.setModal(true);
dialog.setVisible(true) ;
dialog.dispose();
Object o = pane.getValue();
if (o instanceof Integer) {
return (Integer)o;
}
return JOptionPane.CLOSED_OPTION;
}
La linea che disabilita in realtà il pulsante di chiusura è:
dialog.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow