首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Swing复选框组多选处理程序

Java Swing复选框组多选处理程序
EN

Stack Overflow用户
提问于 2014-10-08 01:11:09
回答 1查看 10K关注 0票数 3

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

代码语言:javascript
复制
    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);

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

我使用ItemListener并将其添加到每个复选框中,但它不起作用,因为我无法检测到其他复选框也被选中。

你能帮我一下吗?ListSelectionListener会做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-08 01:23:13

不是的。

创建一个JCheckBoxes数组。

例如:

代码语言:javascript
复制
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]);

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

代码语言:javascript
复制
public void printSelectedNames(JCheckBox[] boxes) {

    for(JCheckBox box : boxes)
        if(box.isSelected())
            System.out.println(box.getText());
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26241488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档