gpt4 book ai didi

Java Swing Group 的复选框多选处理程序

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:01 24 4
gpt4 key购买 nike

我有一组复选框(多项选择),我想知道使用 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);

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

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

你能帮我解决一下吗? ListSelectionListener 可以解决这个问题吗?

最佳答案

没有。
创建 JCheckBox 数组。

例如:

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]);

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

public void printSelectedNames(JCheckBox[] boxes) {

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

关于Java Swing Group 的复选框多选处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26241488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com