繁体   English   中英

如果用户在java中选择了一次,如何阻止用户从下拉框中再次使用相同的选项?

[英]How to prevent user using the same option again from a dropdown box if they have chosen it once, in java?

我在java中创建了一个下拉框和2个textFields,我想要做的是阻止用户再次使用相同的选项,如果他们已经选择了它一次。 下面是我的下拉菜单和textFields的代码。

JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"None", "A", "B", "C"}));
comboBox.setMaximumRowCount(3);
comboBox.setBounds(13, 14, 109, 20);
contentPane.add(comboBox);

textField_1 = new JTextField();
textField_1.setBounds(129, 13, 52, 20);
contentPane.add(textField_1);
textField_1.setColumns(10);

textField_2 = new JTextField();
textField_2.setColumns(10);
textField_2.setBounds(192, 11, 52, 20);
contentPane.add(textField_2);

我有3个参数供用户选择,4个包括None选项。 说用户选择A,在textFields中输入我想要的内容,我有一个按钮添加这些值,即A,10,40(A是从下拉列表中选择的,10是用textfield1编写的,40是用textfield2编写的)到a表。 我想要的是,如果用户选择了A,我希望它从下拉列表中被禁用/删除,并且他们无法再次选择它,如果他们尝试点击它会给出错误并说不允许。

谢谢。

如果您想要禁用单个组合框项目的路线,您可能需要引用此线程

否则,您可以向组合框添加一个事件处理程序,该处理程序将从组件的模型中删除所选项。 这是一些公认的不优雅的代码。 如果要阻止用户删除“无”选项,则需要再写一行或两行。

comboBox.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JComboBox dropdown = (JComboBox)e.getSource();
        DefaultComboBoxModel model = (DefaultComboBoxModel)dropdown.getModel();
        model.removeElement(dropdown.getSelectedItem());
    }
});

我能看到的最简单的方法是从comboBox中删除所选的选项以进行下一轮。 我的猜测是你在处理条目时做了类似的事情:

selected = combobox.getSelectedItem();

您可以使用所选项目从comboBox中删除它的方式相同:

combobox.removeItem(selected);

这应该可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM