Hallo Zusammen
Vielleicht kann jemand einem interessierten Anfäger einen Tip geben. Ich konnte bereits einiges durch mitlesen in Foren, sowie mittels Tutorials oder auch der bekannten Insel durchschummeln. Nun komme ich aber einfach nicht weiter, da ich nicht verstehe wo ich suchen muss.
Was?
JLabel und JTextField während der Laufzeit erstellen und diese dann in einem JPanel anzeigen lassen.
Wozu?
Erstens zum Üben und zweitens will ich:
Aus einer JavaDB eine Tabelle auswählen (Über eine JComboBox) Das hab ich
Die ausgewählte Tabelle im Fenster anzeigen lassen Das hab ich
Pro Tabellenspalte ein JLabel und ein JTextField anzeigen. Das geht nicht.
Stand?
Ich versuche aktuell nur die JLabel anzuzeigen, wenn das funktioniert sollte das JTextField kein problem mehr darstellen. Zur auswahl habe ich mal zwei Tabellen erstellt, eine mit 2 Spalten, die andere mit 3 spalten. Diese kann ich über die JComboBox auch wählen, und die Tabellen werden dann auch korrekt angezeigt. Nur die JLabel kommen nicht.
Fehlermeldung?
Gerade aktuell garkeine, wenn ich auf Run klicke. Dann kann ich die Tabelle wählen, diese wird angezeigt, aber die JLabel nicht.
Wenn ich den Debugger laufen lasse und Schritt für Schritt, Zeile für Zeile durchgehe bricht er entweder in der Methode createLabels() ab.
Oder beim nochmaligen Wählen einer Tabelle aus der JComboBox bricht er am Ende des ActionListeners ab:
Relevanter Codeschnippsel
Vielleicht kann jemand einem interessierten Anfäger einen Tip geben. Ich konnte bereits einiges durch mitlesen in Foren, sowie mittels Tutorials oder auch der bekannten Insel durchschummeln. Nun komme ich aber einfach nicht weiter, da ich nicht verstehe wo ich suchen muss.
Was?
JLabel und JTextField während der Laufzeit erstellen und diese dann in einem JPanel anzeigen lassen.
Wozu?
Erstens zum Üben und zweitens will ich:
Aus einer JavaDB eine Tabelle auswählen (Über eine JComboBox) Das hab ich
Die ausgewählte Tabelle im Fenster anzeigen lassen Das hab ich
Pro Tabellenspalte ein JLabel und ein JTextField anzeigen. Das geht nicht.
Stand?
Ich versuche aktuell nur die JLabel anzuzeigen, wenn das funktioniert sollte das JTextField kein problem mehr darstellen. Zur auswahl habe ich mal zwei Tabellen erstellt, eine mit 2 Spalten, die andere mit 3 spalten. Diese kann ich über die JComboBox auch wählen, und die Tabellen werden dann auch korrekt angezeigt. Nur die JLabel kommen nicht.
Fehlermeldung?
Gerade aktuell garkeine, wenn ich auf Run klicke. Dann kann ich die Tabelle wählen, diese wird angezeigt, aber die JLabel nicht.
Wenn ich den Debugger laufen lasse und Schritt für Schritt, Zeile für Zeile durchgehe bricht er entweder in der Methode createLabels() ab.
Code:
labels[i] = new JLabel("message" + i); // Source not found
Oder beim nochmaligen Wählen einer Tabelle aus der JComboBox bricht er am Ende des ActionListeners ab:
Relevanter Codeschnippsel
Java:
private JPanel PanelHaupt;
private JPanel PanelFelder;
Java:
public ForTabellen() {
// Definition der Listener
action actionListener = new action();
// Fenster einrichten
setTitle("SQL Tabellen bearbeiten");
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Top-Level Layout
setLayout(new BorderLayout());
JPanel PanelWahl = new JPanel();
PanelHaupt = new JPanel();
JPanel PanelButton = new JPanel();
add(PanelWahl, BorderLayout.NORTH);
add(PanelHaupt, BorderLayout.CENTER);
add(PanelButton, BorderLayout.SOUTH);
Java:
// PanelHaupt
PanelHaupt.setLayout(new BorderLayout());
JScrollPane PanelTabelle = new JScrollPane();
PanelHaupt.add(PanelTabelle, BorderLayout.NORTH);
PanelFelder = new JPanel();
// PanelFelder.setLayout(new GridLayout(2,2));
PanelHaupt.add(PanelFelder, BorderLayout.CENTER);
// TODO später löschen: JLabel erstellen zum Testen ob das grundsätzlich funktioniert
JLabel jl = new JLabel("TextLabel ausserhalb der for Schleife");
PanelFelder.add(jl);
Java:
private class action implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
strCmbWahl = (String) cmbTabelle.getSelectedItem();
// SQL String in abhängigkeit vom DropDown erstellen
strSQL = test.getSQL(strCmbWahl);
labSQL.setText(strSQL);
// Tabelle füllen
try {
dbFirma.setQuerry(strSQL);
tbmd = dbFirma.rsToTableModel(dbFirma.getResultSet());
TabTabelle.setModel(tbmd);
TabTabelle.repaint();
drawFelder();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
private void drawFelder() {
// TODO drwaFelder() Methode: Eingabefelder zum Panel hinzufügen führt
// zu Fehler
// Panel und Felder erzeugen
Spaltenanzahl = dbFirma.getSpaltenAnzahl();
try {
JLabel[] labels = createLabels(Spaltenanzahl);
for (int i = 0; i < labels.length; i++) {
PanelFelder.add(labels[i]);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private JLabel[] createLabels(int Anzahl) {
Anzahl = Spaltenanzahl-1;
JLabel[] labels = new JLabel[Anzahl - 1];
for (int i = 0; i < Anzahl - 1; i++) {
labels[i] = new JLabel("message" + i);
}
return labels;
}
Zuletzt bearbeitet: