【问题标题】:Creating Conditional States with JOptionPane Buttons使用 JOptionPane 按钮创建条件状态
【发布时间】:2015-06-30 20:21:56
【问题描述】:

有没有一种方法可以为JOptionPane.showInputDialog() 中的“确定”和“取消”按钮创建单独的条件语句?
我想这样做的原因是因为我不希望将空字符串或仅充满空格的字符串设置为s
当我在空白文本字段中单击“确定”或单击“取消”时,s 将设置为 null。
有没有一种方法可以为确定和取消按钮选择不同的选项,如果我单击取消,窗口将关闭,如果我单击确定,代码将继续执行条件语句?

public boolean stringIsNullOrOnlyWhiteSpaces(String s)  {
   //checks if string is null or if string only contains white spaces
}


private void nameOfString() {
String s = JOptionPane.showInputDialog(this, "Enter String Name");

if (!stringIsNullOrOnlyWhiteSpaces(s)) {
   // do action    
  }

else { // if "ok" were to be clicked and not "cancel"
JOptionPane.showMessageDialog(this, "String cannot be empty");
nameOfString();
}
}

【问题讨论】:

  • 你有没有经过this
  • 在您的示例代码中,您可以在输入对话框的顶部有一个消息对话框。如果您创建自己的 JDialog,则可以在同一个对话框中包含 JTextField 和 JLabel 消息。由于您正在创建 JDialog,因此您可以控制左键单击“确定”和“取消”按钮时发生的情况。

标签: java joptionpane


【解决方案1】:

我怀疑是否有一种方法可以让您只使用JOptionPane,它们应该只是捕获一个值,在.showInputMessage() 的情况下它是一个字符串。

正确的方法是使用JDialog 并在其中添加包含其逻辑的组件。

我对工作真的很无聊,所以我做了一些我认为对你有用的事情:

public class CustomInput {

private JButton btAccept;
private JButton btCancel;
private JLabel lbInput;
private JTextField tfInput;
private JPanel pnDialog;

private JPanel createPanel() {
    java.awt.GridBagConstraints gridBagConstraints;
    pnDialog = new JPanel();
    lbInput = new JLabel();
    tfInput = new JTextField();
    btAccept = new JButton();
    btCancel = new JButton();

    pnDialog.setLayout(new java.awt.GridBagLayout());

    btAccept.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btAcceptAction(evt);
        }
    });

    btCancel.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btCancelAction(evt);
        }
    });

    lbInput.setText("Enter your input.");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.gridwidth = 2;
    pnDialog.add(lbInput, gridBagConstraints);

    tfInput.setText("");
    tfInput.setColumns(10);
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.gridwidth = 2;
    pnDialog.add(tfInput, gridBagConstraints);

    btAccept.setText("Accept");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 2;
    pnDialog.add(btAccept, gridBagConstraints);

    btCancel.setText("Cancel");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 2;
    pnDialog.add(btCancel, gridBagConstraints);

    return pnDialog;
    //Mommy someone is reading my code
}

private void btAcceptAction(java.awt.event.ActionEvent evt) {
    if (tfInput.getText().isEmpty()) {
        JOptionPane.showMessageDialog(pnDialog, "Input cannot be null", "Error", JOptionPane.ERROR_MESSAGE);
    }
}

private void btCancelAction(java.awt.event.ActionEvent evt) {
    JDialog topFrame = (JDialog) SwingUtilities.getWindowAncestor(pnDialog);
    topFrame.dispose();
}

public static void main(String[] args) {
    JDialog dialog = new JDialog();
    CustomInput tp = new CustomInput();
    dialog.add(tp.createPanel());
    dialog.setSize(new Dimension(200,200));
    dialog.setVisible(true);
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2013-10-20
    • 2012-02-14
    • 2016-04-28
    • 1970-01-01
    • 2013-10-28
    相关资源
    最近更新 更多