Hallo Zusammen
Ich brauch ein kleines Prgramm um Personen zu erfassen. Die Personen sind in einer Datenbank gespeichert. Die Mysql-Tabelle sieht folgendermassen aus:
Ich habe nun mit nem GUI Designer in eclipse eine JTable gemacht und mit Beispieldaten gefüllt. Diese Daten werden natürlich in der finalen Applikation von der MySQL DB ausgelesen.
Nun mein Problem: Ich möchte gerne auf eine Zeile doppelklicken dabei geht ein neues Fenster auf (Listing 2). Wie kann ich nun die ID der ausgewählten Zeile ermitteln? Der Benutzer soll im eben aufgegangenem Fenster die Details der Person editieren können.
Listing 2:
Wäre unheimlich froh wenn mir jemand helfen könnte. Es ist eines meiner ersten Programme. Ich weiss dass es einen Listener braucht, nur welchen???
Ich brauch ein kleines Prgramm um Personen zu erfassen. Die Personen sind in einer Datenbank gespeichert. Die Mysql-Tabelle sieht folgendermassen aus:
Code:
// Primärschlüssel
INTEGER id
// Name der Person
VARCHAR name
// Vorname der Person
VARCHAR vorname
// Woher kommt die Person?
VARCHAR von
// Wann wurde die Person geboren
VARCHAR geb
Ich habe nun mit nem GUI Designer in eclipse eine JTable gemacht und mit Beispieldaten gefüllt. Diese Daten werden natürlich in der finalen Applikation von der MySQL DB ausgelesen.
Code:
package test;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class TableJFrame extends javax.swing.JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JScrollPane scrollPane;
private JTable tabelle;
{
// Set Look & Feel
try {
javax.swing.UIManager
.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
TableJFrame inst = new TableJFrame();
inst.setVisible(true);
}
public TableJFrame() {
super();
initGUI();
}
private void initGUI() {
try {
getContentPane().setLayout(null);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
scrollPane = new JScrollPane();
getContentPane().add(scrollPane);
scrollPane.setBounds(7, 7, 693, 301);
{
TableModel tabelleModel = new DefaultTableModel(
new String[][] {
{ "1", "Meier", "Adelheid", "Luzern", "01071944" },
{ "2", "Meier", "Adolf", "Zürich", "06031925" },
{ "3", "Meier", "Agathe", "Basel", "07051931" } },
new String[] { "ID", "Name", "Vorname", "von", "geb" });
tabelle = new JTable();
scrollPane.setViewportView(tabelle);
// tabelle.getColumn( "ID" ).setPreferredWidth(5);
tabelle.setModel(tabelleModel);
}
}
pack();
this.setSize(713, 339);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Nun mein Problem: Ich möchte gerne auf eine Zeile doppelklicken dabei geht ein neues Fenster auf (Listing 2). Wie kann ich nun die ID der ausgewählten Zeile ermitteln? Der Benutzer soll im eben aufgegangenem Fenster die Details der Person editieren können.
Listing 2:
Code:
package test;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class DetailsJFrame extends javax.swing.JFrame {
private JLabel idLabel;
private JLabel vornameLabel;
private JButton saveButton;
private JTextField gebTextField;
private JTextField vonTextField;
private JTextField vornameTextField;
private JTextField nameTextField;
private JTextField idTextField;
private JLabel gebLabel;
private JLabel vonLabel;
private JLabel nameLabel;
{
//Set Look & Feel
try {
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
DetailsJFrame inst = new DetailsJFrame();
inst.setVisible(true);
}
public DetailsJFrame() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
{
idLabel = new JLabel();
getContentPane().add(idLabel);
idLabel.setText("ID");
idLabel.setBounds(7, 7, 21, 14);
}
{
nameLabel = new JLabel();
getContentPane().add(nameLabel);
nameLabel.setText("Name");
nameLabel.setBounds(7, 35, 28, 14);
}
{
vornameLabel = new JLabel();
getContentPane().add(vornameLabel);
vornameLabel.setText("Vorname");
vornameLabel.setBounds(7, 63, 49, 14);
}
{
vonLabel = new JLabel();
getContentPane().add(vonLabel);
vonLabel.setText("von");
vonLabel.setBounds(7, 91, 28, 14);
}
{
gebLabel = new JLabel();
getContentPane().add(gebLabel);
gebLabel.setText("geb");
gebLabel.setBounds(7, 119, 28, 14);
}
{
idTextField = new JTextField();
getContentPane().add(idTextField);
idTextField.setText("ID Welche in der JTable ausgewählt wurde");
idTextField.setBounds(63, 7, 63, 21);
idTextField.setEditable(false);
}
{
nameTextField = new JTextField();
getContentPane().add(nameTextField);
nameTextField.setText("NameAusDatenbank Wo ID=1");
nameTextField.setBounds(63, 35, 133, 21);
}
{
vornameTextField = new JTextField();
getContentPane().add(vornameTextField);
vornameTextField.setText("VornnameAusDatenbank Wo ID=1");
vornameTextField.setBounds(63, 63, 133, 21);
}
{
vonTextField = new JTextField();
getContentPane().add(vonTextField);
vonTextField.setText("VonAusDatenbank Wo ID=1");
vonTextField.setBounds(63, 91, 133, 21);
}
{
gebTextField = new JTextField();
getContentPane().add(gebTextField);
gebTextField.setText("GebAusDatenbank Wo ID=1");
gebTextField.setBounds(63, 119, 63, 21);
}
{
saveButton = new JButton();
getContentPane().add(saveButton);
saveButton.setText("Speichern");
saveButton.setBounds(119, 168, 84, 21);
}
pack();
this.setSize(218, 223);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Wäre unheimlich froh wenn mir jemand helfen könnte. Es ist eines meiner ersten Programme. Ich weiss dass es einen Listener braucht, nur welchen???