Java 选择输入选项后关闭作业窗格

Java 选择输入选项后关闭作业窗格,java,swing,Java,Swing,我使用的是JOptionPane,我希望它在用户选择某个选项后自动关闭。 目前,这是工作,但我仍然必须手动单击确定按钮关闭JOptionPane。勾选复选框后,我是否可以关闭它 JPanel a1 = new JPanel(); a1.add(bubbleCheckBox); a1.add(quickCheckBox); a1.add(insertionCheckBox); a1.add(selectionCheckBox);

我使用的是JOptionPane,我希望它在用户选择某个选项后自动关闭。 目前,这是工作,但我仍然必须手动单击确定按钮关闭JOptionPane。勾选复选框后,我是否可以关闭它

JPanel a1 = new JPanel();
        a1.add(bubbleCheckBox);
       a1.add(quickCheckBox);
        a1.add(insertionCheckBox);
        a1.add(selectionCheckBox);
      //  a1.add(mergeCheckBox);

        arraySize=Integer.parseInt(JOptionPane.showInputDialog(null,"Enter number of elements would like to sort (Recommend max =30)"));
        JOptionPane.showMessageDialog(null, a1, "Choose an algorithm to run", DEFAULT_OPTION);

    }

    public static void lockCheckboxes(JCheckBox a) throws IOException, InterruptedException {
        if (a == insertionCheckBox) {
            selectionCheckBox.setEnabled(false);
            quickCheckBox.setEnabled(false);
            bubbleCheckBox.setEnabled(false);
            mergeCheckBox.setEnabled(false);
       SortAnimator.setArraySize(arraySize);
       SortAnimator animator = new SortAnimator(new InsertionSorter());

这有点复杂

首先,将
ActionListener
添加到
JCheckBox

当触发此
ActionListener
时,您需要找到包含
JCheckBox
的窗口,您需要找到
JOptionPane
的实例,调用
setValue
并将其传递给
JOptionPane。确定选项
,然后处理该对话框

类似于

JPanel a1 = new JPanel();

JCheckBox bubbleCheckBox = new JCheckBox("Bubbble");
JCheckBox quickCheckBox = new JCheckBox("Quick");
JCheckBox insertionCheckBox = new JCheckBox("Insert");
JCheckBox selectionCheckBox = new JCheckBox("Select");

ActionListener al = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JCheckBox cb = (JCheckBox) e.getSource();
        JOptionPane op = (JOptionPane) SwingUtilities.getAncestorOfClass(JOptionPane.class, cb);
        if (op != null) {
            op.setValue(JOptionPane.OK_OPTION);
        }
        SwingUtilities.getWindowAncestor(cb).dispose();
    }
};

bubbleCheckBox.addActionListener(al);
quickCheckBox.addActionListener(al);
insertionCheckBox.addActionListener(al);
selectionCheckBox.addActionListener(al);

a1.add(bubbleCheckBox);
a1.add(quickCheckBox);
a1.add(insertionCheckBox);
a1.add(selectionCheckBox);
//  a1.add(mergeCheckBox);

if (JOptionPane.showConfirmDialog(null, a1, "Choose an algorithm to run", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE) == JOptionPane.OK_OPTION) {
    System.out.println("Yeah for me");
}
就个人而言,我会使用
JComboBox
,让用户选择OK或Cancel