为什么选择行改变之后这个时间触发了两次呢?有没有什么方法只触发一次?AthleteList.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
StudentIDField.setText(AthleteList.getValueAt(AthleteList.getSelectedRow(), 0).toString());
AthleteNameField.setText(AthleteList.getValueAt(AthleteList.getSelectedRow(), 1).toString());
}
});
为什么println语句会打印两次呢?
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
StudentIDField.setText(AthleteList.getValueAt(AthleteList.getSelectedRow(), 0).toString());
AthleteNameField.setText(AthleteList.getValueAt(AthleteList.getSelectedRow(), 1).toString());
}
});
为什么println语句会打印两次呢?
试试用这个事件!
import javax.swing.event.*;public class Test {
private static int index;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400, 300);
final JList AthleteList = new JList(new Object[] { "选项1", "选项2" });
index = AthleteList.getSelectedIndex();
AthleteList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (index == AthleteList.getSelectedIndex()) {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
index = AthleteList.getSelectedIndex();
}
});
frame.add(AthleteList);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}如果楼主是设置的可以选择多行的模式,情况就更复杂了,但思路还是一样。