我正在尝试建立一个删除对象的确认窗口,要求用户在文本字段中输入单词“删除”以确认其操作,然后单击标有“删除”的按钮。此外,它还有标准的“取消”按钮。
以下是我想要的基本概念,但我不确定如何正确返回布尔值:
public static boolean confirmDelete(String msg) {
JPanel panel = new JPanel();
JPanel sPanel1 = new JPanel();
JPanel ssPanel1 = new JPanel();
ssPanel1.setLayout(new BoxLayout(ssPanel1, BoxLayout.Y_AXIS));
JLabel lbl = new JLabel(msg);
confirm = new JTextField(10);
ssPanel1.add(lbl);
ssPanel1.add(confirm);
JPanel ssPanel2 = new JPanel();
ssPanel2.setLayout(new BoxLayout(ssPanel2, BoxLayout.Y_AXIS));
JButton ok = new JButton("Delete");
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(confirm.getText().toLowerCase().equals("delete")) {
//Set the returned value to true;
} else {
alertMsg("Invalid input. Please try again.");
}
}
});
JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
//Set the returned value to false;
}
});
ssPanel2.add(ok);
ssPanel2.add(cancel);
sPanel1.add(ssPanel1);
sPanel1.add(ssPanel2);
panel.add(sPanel1);
JFrame deleteFrm = new JFrame("Confirm Delete");
deleteFrm.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
//Add content to the window.
deleteFrm.setContentPane(panel);
//Display the window.
deleteFrm.pack();
deleteFrm.setVisible(true);
}
基本上,我想使用行boolean deleteItem = ClassName.confirmDelete(msg);
调用此窗口并让它返回布尔值来说明它们是否正确确认了删除状态。如何设置它以返回代码示例中描述的布尔值(这是一种伪代码,因为它显然是不正确的)。这是否可以通过提到的单线呼叫来实现?
答案 0 :(得分:2)
使用JOptionPane代替..更容易获得用户选择结果 然后决定逻辑代码.. 在这里查看例如JOptionPane YES/No Options Confirm Dialog Box Issue -Java 或者在这里 google search results: JOPtionPane examples
答案 1 :(得分:0)
我找到了问题here的答案,这比我想象的要简单得多。结果,我提出了以下代码来返回一个像我想要的布尔值,而不需要构建我自己的窗口所需的所有工作:
public static boolean confirmDelete(String msg) {
String str = JOptionPane.showInputDialog(msg);
if(str != null && str.toLowerCase().equals("delete")) return true;
return false;
}
Elior的答案,虽然不是我想要的,但确实指出了我正确的方向,所以+ 1ed它。不确定我是如何错过JOptionPane的showInputDialog()
方法,但它基本上是我所寻找的(不仅仅是确认是/否;数据对于像这样简单的事情来说太敏感了。)
编辑:添加str != null &&
,否则会在取消时抛出nullPointerException
。