java - CheckBox 的 Java Swing ItemListener 未响应状态更改
问题描述
我想要的是每当有人选中复选框时,他们选择的框的文本输出到右侧面板(我有一个拆分窗格)。现在它没有响应,所以我认为我的 BoxHandler 工作不正常(实现 ItemListener)。我的函数 addBoxListeners 应该为我拥有的每个复选框添加项目侦听器,并且我在 BoxHandler 中覆盖的函数,函数 itemStateChanged 应该将文本添加到右侧面板,并且我知道 addText 正在工作,因为我在 itemListener 之外对其进行了测试。
void addText(String s) { // adds text to the right panel, adds string s
JLabel temp = new JLabel();
temp.setText(s);
temp.setBorder(border1);
rightPanel.add(temp);
}
void addBoxes() {
int i = 0;
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
for (i = 0; i < 10; i++) {
JCheckBox tempBox = new JCheckBox("word " + i);
boxes.add(tempBox);
leftPanel.add(tempBox, gbc);
//leftPanel.add(new JCheckBox("word" + i), gbc);
}
}
private class BoxHandler implements ItemListener{
public void itemStateChanged(ItemEvent event) {
for (JCheckBox checkBox : boxes) {
if (checkBox.isSelected() ) {
addText(checkBox.getText());
}
}
}
}
void addBoxListeners() { // add listeners to all the boxes in the arraylist
BoxHandler handler = new BoxHandler();
int i = 0;
for ( i = 0; i < boxes.size(); i++) {
boxes.get(i).addItemListener(handler);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CheckBox2 cb = new CheckBox2();
cb.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
cb.pack();
cb.setLocationRelativeTo(null);
cb.addBoxListeners();
cb.setVisible(true);
}
以下是我的班级声明的一部分:
public class CheckBox2 extends JFrame {
private ArrayList<JCheckBox> boxes = new ArrayList<JCheckBox>();
JSplitPane splitPane;
EmptyBorder border1 = new EmptyBorder(5, 5, 5, 5);
private JPanel leftPanel = new JPanel();
private JPanel rightPanel = new JPanel();
JLabel labelOne = new JLabel();
JLabel labelTwo = new JLabel();
...
解决方案
推荐阅读
- amazon-web-services - Jenkins 的 AWS Spot Fleet 插件无法加载 AWS 凭证
- python - Python - 'MSVCCompiler' 对象没有属性 'compiler'
- node.js - Nodejs应用程序中的成功和错误消息优化
- xml - Odoo 10:如何隐藏我的自定义模块的导入按钮?
- vb.net - 流阅读器不读取上标字符
- php - 如何获取请求 Ajax 获取访问 wp 功能
- html - 字间距问题
- visual-studio-code - 当存在多个语言服务器时指定最后的标题
- c# - 从 Excel 导出并逐行导入 Word asp.net mvc
- ifs-erp - 是否可以在 IFS 9 中为非自定义字段设置标签名称?