日期:2014-05-20  浏览次数:20626 次

关于JCheckBox的问题。
在这个Frame中 当我点击button按钮是想要得到被选中的的box的值如何实现?
代码如下,得到的是最后一个box的值。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestFrame extends JFrame implements ActionListener, ItemListener {

JFrame frame;
JPanel panel;
JButton button;
JCheckBox box, box1, box2, box3;

public TestFrame() {
frame = new JFrame();
panel = new JPanel();
button = new JButton("ok");
for (int i = 1; i < 11.; i++) {
box = new JCheckBox("box"+i);
panel.add(box);
box.addItemListener(this);
}
panel.add(button);
frame.add(panel);
button.addActionListener(this);
frame.setSize(300, 250);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==button){
if(box.isSelected()){
System.out.println(box.getText());
}
}
}

public void itemStateChanged(ItemEvent e) {

}

public static void main(String[] args) {
new TestFrame();
}

}


------解决方案--------------------
if(e.getSource() instanceOf JCheckbox){
JCheckbox box = (JCheckbox) e.getSource();
if(box.isSelected()){
System.out.println(box.getText());
}
}
------解决方案--------------------
for循环里 box被初始化为最后一个 box10。