Hallo, ich mal wieder.
Also neues, folgendes Problem.
Das Problem ist nun, dass bei einem Klick auf "auswählen" eigentlich die SELECT-Anweisung angepasst wird. Das tut sie auch. Aber die Tabelle soll gleichzeitig auch erscheinen.
Bisher klappt das nicht. Hatte jetzt gedacht eine extra Methode à la
zu schreiben. Nur leider bin ich mir nicht sicher, was ich dort alles reinstecken muss. Irgendwie stehe ich gerade auf einem C-Schlauch
Also neues, folgendes Problem.
Code:
der ganze Import Kram
public class MyFrame extends JFrame implements ActionListener {
private ....
public static void main(String args[]) {
MyFrame g = new MyFrame();
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Auswählen")) //Auswählen-Button
{
abfrageFeld = "ID";
abfrageWert = "2";
try {
dbout();
} catch (SQLException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
}
public List<Kunde> dbout() throws java.sql.SQLException, ClassNotFoundException {
// Treiber laden
Class.forName("com.mysql.jdbc.Driver");
// Connection herstellen
String dbHost = "jdbc:mysql://192.168.0.51/fabian_autopark";
String dbUser = "root";
String dbPass = "";
Connection conn = DriverManager.getConnection(dbHost, dbUser, dbPass);
// Statement erzeugen
Statement stmt = conn.createStatement();
// dbout(stmt)
// Connection schließen
//conn.close();
// abfrageFeld = "ID";
// abfrageWert = "2";
// SQL-Abfragen losschicken
abfrageK1 = "SELECT * FROM kunde WHERE " + abfrageFeld + " = '" + abfrageWert + "'";
System.out.println("SELECT-Anweisung: " + abfrageK1);
// Resultset entgegennehmen
ResultSet resultK1 = stmt.executeQuery(abfrageK1);
ArrayList<Kunde> list = new ArrayList<Kunde>();
while(resultK1.next()) {
Kunde k1 = new Kunde();
k1.setNachname(resultK1.getString("kunde.nachname"));
k1.setVorname(resultK1.getString("kunde.vorname"));
list.add(k1);
}
System.out.println(list);
return list;
}
public createTable() {
}
public MyFrame() {
super("Juchu - Ich habe ein Fenster");
try {
setSize(300, 500);
setLocation(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout(5, 5));
List<Kunde> kundeList = dbout();
// Tabelle erzeugen
Object[][] table = new Object[kundeList.size()][2];
int i=0;
System.out.println("int i=" + i);
for (Kunde k1:kundeList) {
Object[] kundeRow = new Object[2];
kundeRow[0] = k1.getVorname();
kundeRow[1] = k1.getNachname();
table[i] = kundeRow;
i++;
}
String[] spaltenNamen = { "Vorname", "Nachname" };
tabelle = new JTable(table, spaltenNamen);
tabelle.setPreferredScrollableViewportSize(new Dimension(400, 60));
// Panels erzeugen
tablePanel = new JPanel(new GridLayout(2, 1));
northPanel = new JPanel(new GridLayout());
centerPanel = new JPanel(new GridLayout (9,3,2,2));
// Button erzeugen
button1 = new JButton("Hinzufügen");
...
// Leerfeld erzeugen
leerfeld2 = new JLabel(" ");
...
labelDB = new JLabel("Datenbankabfrage");
labelVorname = new JLabel("Vorname");
labelNachname = new JLabel("Nachname");
// Textfelder erzeugen
ausgabefeld1 = new JTextField("");
...
// auf Panel Button packen
tablePanel.add(tabelle.getTableHeader());
tablePanel.add(tabelle);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(450, 150);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add(northPanel, BorderLayout.NORTH);
cp.add(centerPanel, BorderLayout.CENTER);
labelDB.setHorizontalAlignment(SwingConstants.CENTER);
northPanel.add(labelDB);
centerPanel.add (labelVorname);
labelVorname.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (ausgabefeld1);
ausgabefeld1.setHorizontalAlignment(SwingConstants.LEFT);
centerPanel.add (button1);
button1.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (labelNachname);
labelNachname.setHorizontalAlignment(SwingConstants.RIGHT);
centerPanel.add (button2);
button2.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (button3);
button3.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (button4);
button4.setHorizontalAlignment(SwingConstants.CENTER);
centerPanel.add (leerfeld2);
cp.add (tablePanel, BorderLayout.SOUTH);
pack();
setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Das Problem ist nun, dass bei einem Klick auf "auswählen" eigentlich die SELECT-Anweisung angepasst wird. Das tut sie auch. Aber die Tabelle soll gleichzeitig auch erscheinen.
Bisher klappt das nicht. Hatte jetzt gedacht eine extra Methode à la
Code:
public createTable()
zu schreiben. Nur leider bin ich mir nicht sicher, was ich dort alles reinstecken muss. Irgendwie stehe ich gerade auf einem C-Schlauch