如何将额外数据存储到swing复选框?

时间:2015-11-12 08:26:52

标签: java swing checkbox

在swing中创建一个复选框很容易,如:

JCheckBox checkbox = new JCheckBox("hello")

问题是我还想将其他一些值与此checkbox相关联,例如另一个数字99

但是我找不到JCheckBox做任何方法,怎么做?

2 个答案:

答案 0 :(得分:1)

选项3。

你真的需要存储很多值......扩展它......

public class MySuperStoreAlotOfValuesCheckbox extends JCheckBox{
    private static final long serialVersionUID = 1L;
    private int theInt;
    ... all the values in the world...
    public MySuperStoreAlotOfValuesCheckbox(String text){
        super(text);
    }
    public MySuperStoreAlotOfValuesCheckbox(String text, int theInt){
        super(text);
        this.theInt = theInt;
    }
}
@mKorbel在评论

中建议

选项4

checkbox.putClientProperty("myInt",99);
  

clientProperty字典不是为了支持对JComponent的大规模扩展,也不应该在设计新组件时将其视为子类化的替代。

答案 1 :(得分:0)

选项1:使用Map将复选框与值相关联。

Map<JCheckBox, Integer> map = new HashMap<JCheckBox, Integer>();
map.put(checkbox, 99);
int value = map.get(checkbox);

选项2:使用JCheckBox#setActionCommand(String cmd)

checkbox.setActionCommand("99");
int value = new Integer(checkbox.getActionCommand());