Hi,
Ich habe ein kleines Problem, ich habe eine JTable bei der Events ausgeführt erden, sobald eine Zelle angeklickt wird. Mein Problem ist das auch Events ausgeführt werden wenn ich die Spalten neu ordne ( setReorderingAllowed(true); wenn ich eine Spalte an eine andere Position ziehe)
Weiß jemand wie ich nur Events ausführen kann wenn eine Zelle selektiert wird?
Ich habe hier ein kleines Beispiel (zum besseren Verständnis)
Vielen Dank schonmal
Ich habe ein kleines Problem, ich habe eine JTable bei der Events ausgeführt erden, sobald eine Zelle angeklickt wird. Mein Problem ist das auch Events ausgeführt werden wenn ich die Spalten neu ordne ( setReorderingAllowed(true); wenn ich eine Spalte an eine andere Position ziehe)
Weiß jemand wie ich nur Events ausführen kann wenn eine Zelle selektiert wird?
Ich habe hier ein kleines Beispiel (zum besseren Verständnis)
Code:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.Dimension;
import java.awt.GridLayout;
public class TableSample extends JPanel {
public TableSample() {
super(new GridLayout(1,0));
String[] columnNames = {"1",
"2",
"3",
"4"};
Object[][] data = {
{"A", "B", "C", new Integer(1)},
{"D", "E", "F", new Integer(2)},
{"G", "H", "I", new Integer(3)},
{"J", "K", "L", new Integer(4)},
{"M", "N", "O", new Integer(50)}
};
final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
table.setColumnSelectionAllowed(true);
table.getTableHeader().setReorderingAllowed(true);
Listener listener = new Listener(table);
table.getSelectionModel().addListSelectionListener(listener);
table.getColumnModel().getSelectionModel().addListSelectionListener(listener);
JScrollPane scrollPane = new JScrollPane(table);
this.add(scrollPane);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableSample newContentPane = new TableSample();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
class Listener implements ListSelectionListener{
JTable table;
public Listener(JTable table){
this.table = table;
}
@Override
public void valueChanged(ListSelectionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == table.getSelectionModel()
&& table.getRowSelectionAllowed()) {
System.out.println("Row");
} else if (e.getSource() == table.getColumnModel().getSelectionModel()
&& table.getColumnSelectionAllowed() ){
System.out.println("Col");
}
}
}