Hi Leutz.
Ich hab mal ne Frage und hoffe es wird nicht allzu peinlich für mich
Ich brauch ziemlich oft Tabellen und jetzt müsste es doch möglich sein irgendwie
bei nem Doppelklick auf die Tabelle eine Methode der Aufrufenden Klasse( in meinem fall TestFrame) aufzurufen, und dieser dann die Daten der Zeile mitzugeben.
TestFrame.fillTextFields() bringt nichts weil die Tabelle von sehr vielen Klassen verwendet werden soll.
Mein Ziel ist es diese Tabellenklasse immer wieder zu verwenden.
Ich übergebe einen Select auf eine Datenbank, bekomme die Daten in der Tabelle angezeigt und will dann eine Methode der Aufrufenden Klasse aufrufen um z.B. Textfelder mit den Daten des ausgewählten Satzes zu füllen.
Bis jetzt mache ich das mittels Reflection, aber mir gefällt diese Lösung nicht wirklich.
Ich hoffe Ihr versteht mein Problem.
Hier mal ein lauffähiges Basic Prog das es evtl. bisschen genauer erklärt.
hab einfach mal irgendwelche daten zum Probieren in die Tabelle geschrieben.
gruss
MScalli
Ich hab mal ne Frage und hoffe es wird nicht allzu peinlich für mich

Ich brauch ziemlich oft Tabellen und jetzt müsste es doch möglich sein irgendwie
bei nem Doppelklick auf die Tabelle eine Methode der Aufrufenden Klasse( in meinem fall TestFrame) aufzurufen, und dieser dann die Daten der Zeile mitzugeben.
TestFrame.fillTextFields() bringt nichts weil die Tabelle von sehr vielen Klassen verwendet werden soll.
Mein Ziel ist es diese Tabellenklasse immer wieder zu verwenden.
Ich übergebe einen Select auf eine Datenbank, bekomme die Daten in der Tabelle angezeigt und will dann eine Methode der Aufrufenden Klasse aufrufen um z.B. Textfelder mit den Daten des ausgewählten Satzes zu füllen.
Bis jetzt mache ich das mittels Reflection, aber mir gefällt diese Lösung nicht wirklich.
Ich hoffe Ihr versteht mein Problem.
Hier mal ein lauffähiges Basic Prog das es evtl. bisschen genauer erklärt.
Code:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class TestFrame extends JFrame
{
public TestFrame (){
this.setSize(800, 600);
JPanel panel = new JPanel();
panel.setBounds(200, 150, 400, 300);
this.add(panel);
MyTable table = new MyTable();
panel.add(new JScrollPane(table));
this.setVisible(true);
}
public void fillTextFields(){
System.out.println("Hier bräucht ich die ausgewählten Spaltendaten um z.B. Textfelder zu füllen");
}
public static void main (String args[]) {
new TestFrame ();
}
}
Code:
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class MyTable extends JTable{
MyTable(){
String[][] rowData = {
{ "Japan", "12" }, { "USA", "22" }, { "Italien", "222" },
{ "Spanien", "21" }, {"Türkei", "21"} ,{ "England", "21" },
{ "Frankreich", "19" }, {"Griechenland", "18" },
{ "Deutschland", "18" }, {"Portugal", "17" }
};
String[] columnNames = {
"Land", "Platz"
};
// TableModel Sortierung geht von alleine!!
DefaultTableModel model = new DefaultTableModel(rowData, columnNames) {
public boolean isCellEditable(int row, int col) {
return false;
}
};
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
this.setRowSorter(sorter);
this.setModel(model);
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
if ( e.getClickCount() == 2 ) {
System.out.println("Doppelklick");
System.out.println("Hier müsste ich die Methode fillTextFields() der aufrufenden Klasse aufrufen" );
// aber wie mache ich das ausserdem müsste ich die ausgewählte Zeile mit übergeben, besser gesagt
// die Daten in dieser Zeile um dann z.B. über den key einen Select auf die Datenbank zu machen,
// mir die Daten des gewählten Satzes holen und dann die (noch nicht vorhandenen) Textfelder
// in der aufrufenden Klasse zu füllen
}
}
});
}
}
hab einfach mal irgendwelche daten zum Probieren in die Tabelle geschrieben.
gruss
MScalli