tomtutor0815
Grünschnabel
Hi,
innerhalb eines JFrame wird ein zweites JFrame erzeugt, in dem daten aus deiner DB(oracle)
angezeigt werden- mittels JTable. Die ergebnissmenge ist sagen wir 10 rows. Das wird korrekt in einer JTable angezeigt. Nun möchte ich mit den cursor tasten auf eine row positionieren und mit <ENTER> auswählen. daraufhin soll das JFrame mit dem JTable geschlossen werden und die ausgewählte zeile an das haupt-Fenster (JFrame) übergeben werden. Ebenso soll eine zeile mit einem Doppelclick ausgewählt werden können, und das JTable geschlossen werden.
soweit so gut.
Das einzige was ich nicht hin bekomme ist, den doppelclick bzw. die Entertaste abzufragen.
Ich hab eine KeyListner und MouseListner der Jtable zugewiesen. Aber wie frage ich ab,
was passiert ist?
public void getTableItem(String[][] daten, String [] columnNames){
JFrame jFrame = new JFrame();
// JTable table = new JTable(daten, columnNames );
JTable table = new JTable(new xTableModel(daten, columnNames));
final TableKeyEventHandler tableKeyEventHandler = new TableKeyEventHandler();
final TableMouseEventHandler tableMouseEventHandler = new TableMouseEventHandler();
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.addKeyListener(tableKeyEventHandler);
table.addMouseListener(tableMouseEventHandler);
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel lsm = (ListSelectionModel)e.getSource();
if (lsm.isSelectionEmpty()) {
System.out.println("No rows are selected.");
} else {
int selectedRow = lsm.getMinSelectionIndex();
hier müsste man abfragen ob <entertaste> oder doppelclick
passiert ist. wie geht das? wie muss der listner dazu aussehen
tableKeyEventHandler.keyPressed(?)
System.out.println("Row " + selectedRow
+ " is now selected.");
}
}
});
jFrame.getContentPane().add( new JScrollPane(table) );
// jFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
jFrame.pack();
jFrame.setVisible( true );
}
vielen dank für eure hilfe.
innerhalb eines JFrame wird ein zweites JFrame erzeugt, in dem daten aus deiner DB(oracle)
angezeigt werden- mittels JTable. Die ergebnissmenge ist sagen wir 10 rows. Das wird korrekt in einer JTable angezeigt. Nun möchte ich mit den cursor tasten auf eine row positionieren und mit <ENTER> auswählen. daraufhin soll das JFrame mit dem JTable geschlossen werden und die ausgewählte zeile an das haupt-Fenster (JFrame) übergeben werden. Ebenso soll eine zeile mit einem Doppelclick ausgewählt werden können, und das JTable geschlossen werden.
soweit so gut.
Das einzige was ich nicht hin bekomme ist, den doppelclick bzw. die Entertaste abzufragen.
Ich hab eine KeyListner und MouseListner der Jtable zugewiesen. Aber wie frage ich ab,
was passiert ist?
public void getTableItem(String[][] daten, String [] columnNames){
JFrame jFrame = new JFrame();
// JTable table = new JTable(daten, columnNames );
JTable table = new JTable(new xTableModel(daten, columnNames));
final TableKeyEventHandler tableKeyEventHandler = new TableKeyEventHandler();
final TableMouseEventHandler tableMouseEventHandler = new TableMouseEventHandler();
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.addKeyListener(tableKeyEventHandler);
table.addMouseListener(tableMouseEventHandler);
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel lsm = (ListSelectionModel)e.getSource();
if (lsm.isSelectionEmpty()) {
System.out.println("No rows are selected.");
} else {
int selectedRow = lsm.getMinSelectionIndex();
hier müsste man abfragen ob <entertaste> oder doppelclick
passiert ist. wie geht das? wie muss der listner dazu aussehen
tableKeyEventHandler.keyPressed(?)
System.out.println("Row " + selectedRow
+ " is now selected.");
}
}
});
jFrame.getContentPane().add( new JScrollPane(table) );
// jFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
jFrame.pack();
jFrame.setVisible( true );
}
vielen dank für eure hilfe.