Domanda

Se l'utente fa clic X in alto a destra, io non voglio che succeda qualcosa. Qual è la linea di codice per rendere questo accada?

Object [] options1 = {"Go Back", "Accept"};
 int a3 =JOptionPane.showOptionDialog(null,"Mean arterial pressure restored.\nReassess all vitals STAT.", "Title", JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options1, options1[0]);

 if(a3 == JOptionPane.CLOSED_OPTION)
{
 //what should i put here? if user X out, I want no response (DO_NOTHING_ON_CLOSE)
 }

 if(a3 == JOptionPane.YES_OPTION)
{ 
// doing something else
 }

if (a3 == JOptionPane.NO_OPTION)
{
//doing something else
}

ho provato qualcosa di simile a3.setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE); ma ottengo un int errore non può essere Dereferenced

È stato utile?

Soluzione

opzione Chris Inoltre, date un'occhiata ai javadocs ( http://download.oracle.com/javase/6/docs/api/javax/swing/JOptionPane.html ) esempio l'uso diretto.

Si può realizzare ciò che avete provato con:

Object [] options1 = {"Go Back", "Accept"};
JOptionPane jop = new JOptionPane("Mean arterial pressure restored.\nReassess all vitals STAT.", JOptionPane.PLAIN_MESSAGE, JOptionPane.YES_NO_OPTION, null, options1, options1[0]);
JDialog dialog = jop.createDialog(null, "Title");
dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
// In real code, you should invoke this from AWT-EventQueue using invokeAndWait() or something
dialog.setVisible(true);
// and would cast in a safe manner
String a3 = (String) jop.getValue();
if (a3.equals("Accept")) {

} else if (a3.equals("Go Back")) {

}
// don't forget to dispose of the dialog
dialog.dispose();

Altri suggerimenti

Che dire di questo approccio minimalista:

Object [] options1 = {"Go Back", "Accept"};

do {
    a3 = JOptionPane.showOptionDialog(null,"Mean arterial pressure restored.\nReassess all vitals STAT.", "Title", JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options1, options1[0]);
} while(a3 == JOptionPane.CLOSED_OPTION);

if (a3 == JOptionPane.YES_OPTION) { 
    // doing something else
}

if (a3 == JOptionPane.NO_OPTION) {
    //doing something else
}

Questo codice potrebbe fare il trucco (è possibile eseguire il codice per testarlo):

import javax.swing.*;  
import java.awt.*;  
import java.awt.event.*;  
class Testing  
{  
  public void buildGUI()  
  {  
    JFrame.setDefaultLookAndFeelDecorated(true);  
    JFrame f = new JFrame();  
    f.setResizable(false);  
    removeMinMaxClose(f);  
    JPanel p = new JPanel(new GridBagLayout());  
    JButton btn = new JButton("Exit");  
    p.add(btn,new GridBagConstraints());  
    f.getContentPane().add(p);  
    f.setSize(400,300);  
    f.setLocationRelativeTo(null);  
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    f.setVisible(true);  
    btn.addActionListener(new ActionListener(){  
      public void actionPerformed(ActionEvent ae){  
        System.exit(0);  
      }  
    });  
  }  
  public void removeMinMaxClose(Component comp)  
  {  
    if(comp instanceof AbstractButton)  
    {  
      comp.getParent().remove(comp);  
    }  
    if (comp instanceof Container)  
    {  
      Component[] comps = ((Container)comp).getComponents();  
      for(int x = 0, y = comps.length; x < y; x++)  
      {  
        removeMinMaxClose(comps[x]);  
      }  
    }  
  }  
  public static void main(String[] args)  
  {  
    SwingUtilities.invokeLater(new Runnable(){  
      public void run(){  
        new Testing().buildGUI();  
      }  
    });  
  }  
}  
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top