如何在一组循环生成的按钮中识别一个按钮?
how to identify a button in a group of loop generated buttons?
我有一组用这段代码制作的循环生成的按钮
this.panelCuerpo.setLayout(new GridLayout(4,5));
for(int i = 1; i<=20; i++){
final JToggleButton b = new JToggleButton(new ImageIcon("/images/available.png"));
panelCuerpo.add(b);
b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/available1.png")));
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt){
if(b.isSelected()){
b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/busy1.png")));
cantidadBoletas++;
}else{
b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/available1.png")));
cantidadBoletas--;
}
System.out.println(cantidadBoletas);
}
});
}
这里的问题是我以后不能使用 setText() 进行比较,因为没有 属性 来隐藏该文本。以后怎么比较呢?
PS。每个按钮都有一个连续的编号,很容易分配该编号。真正的问题在于把它放在哪里。
您可以维护 JToggleButton
的 List<JToggleButton>
并稍后由 index
获取元素。除此之外,而不是在循环中添加 ActionListener
你可以实现 ActionListener
它可以用于所有按钮,你只需要在循环中写 b.addActionListener(this);
.
注意 :最好从 i = 0
而不是 1
开始
你可以:
- 使用
Action
API,它可以触发关联按钮的 selected
状态。这允许您将按钮与它应该使用的底层 "action" 分离。查看 How to Use ActionsHow to Use Actions 了解更多详情
- 使用
actionCommand
属性的JButton
。这允许您将某种 "identifier" 与独立于文本 的按钮相关联
- 使用数组或
List
维护对按钮的引用
我有一组用这段代码制作的循环生成的按钮
this.panelCuerpo.setLayout(new GridLayout(4,5));
for(int i = 1; i<=20; i++){
final JToggleButton b = new JToggleButton(new ImageIcon("/images/available.png"));
panelCuerpo.add(b);
b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/available1.png")));
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt){
if(b.isSelected()){
b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/busy1.png")));
cantidadBoletas++;
}else{
b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/available1.png")));
cantidadBoletas--;
}
System.out.println(cantidadBoletas);
}
});
}
这里的问题是我以后不能使用 setText() 进行比较,因为没有 属性 来隐藏该文本。以后怎么比较呢?
PS。每个按钮都有一个连续的编号,很容易分配该编号。真正的问题在于把它放在哪里。
您可以维护 JToggleButton
的 List<JToggleButton>
并稍后由 index
获取元素。除此之外,而不是在循环中添加 ActionListener
你可以实现 ActionListener
它可以用于所有按钮,你只需要在循环中写 b.addActionListener(this);
.
注意 :最好从 i = 0
而不是 1
你可以:
- 使用
Action
API,它可以触发关联按钮的selected
状态。这允许您将按钮与它应该使用的底层 "action" 分离。查看 How to Use ActionsHow to Use Actions 了解更多详情 - 使用
actionCommand
属性的JButton
。这允许您将某种 "identifier" 与独立于文本 的按钮相关联
- 使用数组或
List
维护对按钮的引用