Hier mal ein Beispielprogramm mit meinem Problem. Die indizes firstIndex und lastIndex werden auf der Konsole ausgegeben. Code kann direckt in Eclipse kopiert und ausgeführt werden.
[JAVA=42]package testing;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Testing implements ListSelectionListener {
Testing(){
JFrame mainFrame = new JFrame("Test");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setMinimumSize( new Dimension(700, 100) );
Container contentPanel = mainFrame.getContentPane();
contentPanel.setLayout(new BoxLayout(contentPanel,BoxLayout.Y_AXIS));
//Spaltenbeschriftung
String[] columnNames = {"Text1",
"Text2",
};
//Daten für die Tabelle in Array ablegen
Object[][] data = new Object[4][2];
data[0][0] = "bla1";
data[1][0] = "bla2";
data[2][0] = "bla2";
data[3][0] = "bla3";
data[0][1] = "club1";
data[1][1] = "club2";
data[2][1] = "club3";
data[3][1] = "club4";
//Tabelle Erzeugen
JTable table = new JTable(data, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
table.getSelectionModel().addListSelectionListener( this );
contentPanel.add( scrollPane );
mainFrame.pack();
mainFrame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
Testing window = new Testing();
}
});
}
@Override
public void valueChanged(ListSelectionEvent arg0) {
System.out.println("firstIndex: " + arg0.getFirstIndex() + " , " + "lastIndex: " + arg0.getLastIndex() );
}
}
[/code]
Man sieht wie gesagt, das er die Indizes wohl zwischenspeichert außerdem ruft er valueChanged() immer doppelt auf