Java Swing Group的复选框多选处理程序 [英] Java Swing Group of checkbox multiple selection handler

查看:80
本文介绍了Java Swing Group的复选框多选处理程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组复选框(多项选择),我想知道使用ListSelectionListener选中了哪些项目

I have a group of checkboxes (multiple selection) and I want to know which items are selected using ListSelectionListener

    Box box = new Box(BoxLayout.Y_AXIS);
    foodBox = new JCheckBox("");
    proteinBox  = new JCheckBox("");
    noLabelBox =  new JCheckBox("");
    aggregateBox =  new JCheckBox("");

    box.add(getLegendSpecificBox("FOOD", new Color(0, 255, 127), 0));
    box.add(foodBox);
    box.add(getLegendSpecificBox("PROTEIN", new Color(240, 230, 140), 0));
    box.add(proteinBox);
    box.add(getLegendSpecificBox("NO LABEL", new Color(220, 220, 220), 0));
    box.add(noLabelBox);
    box.add(getLegendSpecificBox("AGGREGATION", new Color(255, 140, 0), 0));
    box.add(aggregateBox);

我有一个图,其节点带有食品,蛋白质或聚集体标签。我想要实现的是,当我选中食物复选框时,将带有其他标签(蛋白质等)的节点变灰。但是我也想允许多个选择,例如,当我选中食物复选框和蛋白质复选框时,它将使其他标签(聚合等)变灰,而食物和蛋白质则保持其原始颜色。

I have a graph with nodes with labels of either food, protein or aggregate. What I want to achieve is when I check food checkbox, I grey out nodes with other label(protein, etc). But I want to allow multiple selection too, for example, when I check food checkbox and protein checkbox, it will grey out other labels(aggregate etc) but food and protein maintain their original color.

我正在使用ItemListener并将其添加到每个复选框,但是由于我无法与其他复选框一起检测,因此无法正常工作。

I was using ItemListener and add it to every checkbox but it does not work because I can not detect with other checkboxes are also checked.

可以帮忙吗关于我吗?

Can you help me about it? would ListSelectionListener do the trick?

推荐答案

否。

创建一个JCheckBoxes数组。

No.
Create an array of JCheckBoxes.

例如:

String[] food = {"Pizza", "Burger", "Pasta", "Hot Dog", "etc"};

JCheckBox[] boxes = new JCheckBox[food.length]; //  Each checkbox will get a name of food from food array.  

for(int i = 0; i < boxes.length; i++)
    boxes[i] = new JCheckBox(food[i]);

现在,我们创建一种方法来检查选中了哪个框。您可能可以将相同的方法主体复制到操作侦听器:

Now we create a method to check which box is selected. You can probably copy the same method body to an action listener:

public void printSelectedNames(JCheckBox[] boxes) {

    for(JCheckBox box : boxes)
        if(box.isSelected())
            System.out.println(box.getText());
}

这篇关于Java Swing Group的复选框多选处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆