当前位置: 首页 > 面试题库 >

Java中的三态复选框

宁良平
2023-03-14
问题内容

我真的可以在Java中使用三态复选框。听起来很简单,但是我只看到过非常丑陋的实现
[注意:链接现在坏了]。

三个单选按钮占用的空间过多,就我而言,这可能会使用户感到困惑。基本上是用于搜索对话框的。我需要true,false或“无关”选项。人们使用其他技术吗?


问题答案:

我找到了一种通过简单地添加侦听器来制作三态复选框的方法:

public class TriStateActionListener implements ActionListener{
    final protected Icon icon;

    public TriStateActionListener(Icon icon){
        this.icon=icon;
    }

    public static Boolean getState(javax.swing.JCheckBox cb){
        if (cb.getIcon()==null) return null;
        if (cb.isSelected()) return true;
        else return false;
    }

    public void actionPerformed(ActionEvent e) {
        javax.swing.JCheckBox cb=(javax.swing.JCheckBox)e.getSource();
        if (!cb.isSelected()){
            cb.setIcon(icon);
        }
        else if (cb.getIcon()!=null){
            cb.setIcon(null);
            cb.setSelected(false);
        }
    }
}

然后在应用程序代码中,只有一行:

jCheckBox1.addActionListener(new TriStateActionListener(getResourceMap().getIcon("TriStateIcon")));

收到所有反馈后,我认为下拉列表可能是一个更好的选择。但是,我想在这里与其他人分享我的代码。



 类似资料:
  • 如何更改三态MFC复选框控件的顺序? 现在,当我单击它时,它的状态顺序如下:BST_INDETERMINATE>BST_UNCHECKED>BST_CHECKED>cycle 但我需要以下内容:BST_INDETERMINATE>BST_CHECKED>BST_UNCHECKED>循环

  • 问题内容: 我想制作一个JComboBox,它具有用于项目而不是文本的复选框。此外,应该可以检查多个项目并从组件中检索选定的项目。我应该做一个自定义的ComboBoxUI,ComboBoxEditor,ListCellRenderer,ComboPopUp还是其他完全不同的东西?是否有一个现有的Java控件可以做到这一点? 问题答案: 这相当容易实现。在这里找到链接文本

  • 问题内容: 我在Java GUI中大约有200复选框。现在,我想获得用户已选中的所有复选框的列表。 我可以这样一种方式来做: 但是我不想为200个复选框编写此行。有没有办法通过for循环来做到这一点。 所有复选框的名称都类似于jCheckBox1,jCheckBox2,jCheckBox3,jCheckBox4 … jCheckBox200 问题答案: 您确实应该将它们放入数组或Collectio

  • 如果我打开活动,复选框始终保持选中状态,即使我取消选中它并离开活动或关闭应用程序,在重新启动活动后,它也将保持选中状态。 我已尝试使用以下代码段保存活动的状态。 复选框应始终处于用户离开它的状态(选中或未选中)。

  • 问题内容: 我有一个与此非常相似的JTable。 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting 我已经设法在其上设置了普通过滤器(搜索功能),并且效果很好。我想要一个按钮,该按钮将立即仅显示选中素食的行。 好吧,现在感谢@peeskillet和@HovercraftFullOfEels提供的

  • 这是我的状态 我试图做的是,每当选中或未选中复选框时,我将相应的复选框设置为true/false。根据每个复选框的这个布尔值,我过滤出,然后在UI上呈现它。当单击复选框时,我能够筛选结果,但当未选中复选框时,我无法显示所有结果。当复选框发生更改时,我就是这样处理的。 我知道我没有正确地处理状态,在这种情况下我能做什么。为了更好地参考,这里是完整的搜索结果代码。