如果用户点击右上角的X,我不希望发生任何事情。实现这一目标的代码是什么?
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
}
我试过像a3.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 但我得到一个错误int无法解除引用
答案 0 :(得分:3)
除了Chris选项,请查看javadocs(http://download.oracle.com/javase/6/docs/api/javax/swing/JOptionPane.html)直接使用示例。
您可以通过以下方式实现目标:
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();
答案 1 :(得分:1)
这种简约方法怎么样:
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
}
答案 2 :(得分:0)
这段代码可能会解决问题(您可以运行代码来测试它):
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();
}
});
}
}