在这个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。