7

在我的 GUI 项目中有一个方法用于显示一个JOptionPane带有多个组件的组件,其中 2 个组件各有ButtonGroups2JRadioButtons个,在第一组中默认选择第一个按钮,在第二组中默认选择第二个按钮,在第二组中,我希望禁用第一个按钮,直到选择第一组中的第二个按钮,即如果用户对 BG1 中的默认选择感到满意,那么他们不能在 BG2 中进行选择,只有当他们做出BG1中的第二个选择他们可以在BG2中有其他选项吗?

这种类型的行为是否可能与 a JOptionPane

一直在查看 的教程JDialogJOptionPane并进行其他研究,但在这种情况下,这些都没有帮助。如果有人能给我一些指导,找到一个非常棒的可能解决方案......

4

3 回答 3

0

我认为使用 JOption 是不可能的。但我认为使用 JDialog 是可行的。

例如:

当您打开对话框时,您可以使用命令 JFrame(在这里您必须写下您的窗口名称).enable(false)

当复选框为真时,您可以在计数器中有关闭按钮,您可以有一个复选框。它会显示一个按钮,当你点击它可以使按钮不可见

于 2013-04-16T16:49:31.667 回答
0

最好的选择是 JDialog

因为 JOptionPane 不支持这么多组件。

于 2014-12-17T03:57:56.673 回答
0

elective.addActionListener声明中我调用了错误的变量,cp12而不是cp6,在下面发布了我的缩减代码,一切都很好,谢谢

    public void displayAddSomething(ArrayList<String> items)
    {
// cut down version only showing the button panels

    // initialising the variables       
    JPanel buttPanel = new JPanel(new GridLayout(0, 1));
    JPanel pointPanel = new JPanel(new GridLayout(0, 1));
    JRadioButton core = new JRadioButton("Core Item: ", true);
    final JRadioButton elective = new JRadioButton("Elective Item: ");
    final JRadioButton cp6 = new JRadioButton("6 Points: ");
    JRadioButton cp12 = new JRadioButton("12 Points: ", true);
    ButtonGroup bg1 = new ButtonGroup();
    ButtonGroup bg2 = new ButtonGroup();

    // adding the buttons to buttPanel  and the button group 1
    buttPanel.add(new JLabel("Select Course Type"));
    buttPanel.add(core);
    buttPanel.add(elective);
    buttPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2));
    bg1.add(core);
    bg1.add(elective);

    // add buttons pointPanel and bg2
    pointPanel.add(new JLabel("Select Credit Points"));
    pointPanel.add(cp6);
    pointPanel.add(cp12);
    pointPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2));
    bg2.add(cp6);
    bg2.add(cp12);

    cp6.setEnabled(false);


    // add action listener for each of bg1 buttons so if event
    // occurs the cp6 button will toggle between enabled and disabled.

    elective.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {   
             cp6.setEnabled(true);
        }});

    core.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            cp6.setEnabled(false);
        }});

    Object[] message = {buttPanel,pointPanel};

    int result = JOptionPane
        .showOptionDialog(
        this,
        message,
        "...some text...",
        JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE,
        null, new String[] { "Submit", "Cancel" }, "Default");

    if (result == JOptionPane.OK_OPTION)
        {
        // collecting all the input values in a string array to pass to
            // another class for processing by the model... 
        }
    else if (result == JOptionPane.NO_OPTION)
        {
             JOptionPane.showMessageDialog(this,
             "You Have Elected Not to do anything At This Time",
             "YOU HAVE COME THIS FAR AND YOU QUIT NOW....",
            JOptionPane.QUESTION_MESSAGE);                     
        }
    }
于 2015-06-26T16:54:14.197 回答