Swing Ein kleines Formatierungsproblem

Status
Nicht offen für weitere Antworten.

Dolce

Mitglied
Hallo Jungs,

ich hab hier ein Formatierungsproblem von einem String!
Zur Ausgangssituation:
Ich hab ne grafische Oberfläche mit ComboBoxen und hab einen MySQL - Klasse
für die Datenbankverbindung.
Wenn ich auf den Pfeil meiner ComboBox Klicke soll er mir daten aus der Datenbank holen, das funktioniert auch --> also die Daten stehen dann in der ComboBox!

Jetzt zum Problem:
Die Daten stehen aber als ein kompletter String in der ComboBox, d.h. in einer Zeile!
Ich möchte aber jeden Namen (hänge den Code noch an) als eigenen Item bzw. eigenen String anhängen!

Wie mache ich das???
Danke
Gruß

Das ist mein PopupListener
Java:
public void jComboBox1popupMenuWillBecomeVisible(PopupMenuEvent e)
  {
    boolean initialized = false;
    if (!initialized) {
          ComboBoxModel model = new DefaultComboBoxModel();
          jComboBox1.setModel(model);
          initialized = true;
          MySQL lehrercombo = new MySQL();
          jComboBox1.addItem(lehrercombo.combolehrer());
        }
  }

Das ist meine Methode um die Daten aus der Datenbank zu holen und in den Vector zu schreiben
Java:
public static Vector combolehrer ()
     {
       Connection conn = null;
       Vector lehrer = new Vector();
       try
       {
        //Lade den JDBC Treiber:
        String driverName = "com.mysql.jdbc.Driver";
        Class.forName(driverName);

        //erstelle eine Verbindung zur Datenbank "schluesselprogramm"
        String serverName ="localhost";
        String mydatabase ="schluesselprogramm";

        //jetzt eine JDBC url:
        String url = "jdbc:mysql://" + serverName + "/" + mydatabase;
        String username = "root";
        String password = "";

        //jetzt verbinden:
        conn = DriverManager.getConnection(url, username, password);
        System.out.println("\nDatenbank " + mydatabase + " erfolgreich verbunden");
                 Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("Select pname from pverz");
                 while ( rs.next() )
                 {
                   lehrer.add(rs.getString(1));

                  }
                 stmt.close();



       }
        //und wenns nicht geklappt hat, 2 Gruende moeglich:
       catch (ClassNotFoundException e)
       {
         System.out.println("\nKann den Datenbanktreiber nicht finden\n");
       }
         catch (SQLException e)
       {
         System.out.println("\nKann die Datenbank nicht verbinden!\n");
       }
       return lehrer;
     }
 

foobar

Top Contributor
Du mußt einfach nur jedes Item einzeln hnizufügen:
Java:
for (String lehr: lehrercombo.combolehrer())
{
 jComboBox1.addItem(lehr);
}

Schöner ist es aber mit einem eigenen ComboboxModel.
 
G

Gast2

Gast
1. Jedes mal wenn du die Methode aufrufen willst baust eine neue Verbindung zu Datenbank auf die Sachen solltest du vielleicht in eine extra methode auslagern...
2. du kannst den Vector gleich dem Model mitgeben
Java:
ComboBoxModel model = new DefaultComboBoxModel(DEIN VECTOR);
3.du hast eine statische Methode dann musst keine Instanz von deiner Klasse erzeugen...
MySql.methode() reicht auch
 

foobar

Top Contributor
4. Die Klasse Vector sollte man nicht mehr verwenden. Pack deinen Lehrer in ein POJO und gib in deiner DB-Klasse eine List<Lehrer> zurück. Damit haste auch mehr Typsicherheit.

5. Wenn man Exceptions fängt sollte man diese auch weiter verarbeiten. Gib zumindest mal den Stacktrace aus, dann siehste im Fehlerfall auch etwas mehr.
 
G

Gast2

Gast
6. Geb deinen Methoden sprechende Namen z.B. getTeachers() o.ä.
 

Dolce

Mitglied
Mmhh,
wenn ich aber versuche jedes Item einzeln hinzuzufügen
meldet er mir folgenden Fehler:

Java:
Gesamtliste.java:192: incompatible types
found   : java.lang.Object
required: java.lang.String
          for (String lehr: lehrercombo.combolehrer())
                                                   ^
1 error

Java:
 public void jComboBox1popupMenuWillBecomeVisible(PopupMenuEvent e)
  {
    boolean initialized = false;
    if (!initialized) {
          ComboBoxModel model = new DefaultComboBoxModel();
          jComboBox1.setModel(model);
          initialized = true;
          MySQL lehrercombo = new MySQL();
          //jComboBox1.addItem(lehrercombo.combolehrer());
          for (String lehr: lehrercombo.combolehrer())
          {
          jComboBox1.addItem(lehr);
          }
        }
  }
 
G

Gast2

Gast
Setz doch einfach mal die 6 Tips um dann sieht dein code eh ganz anders aus
 
G

Gast2

Gast
so könnte es ungefähr aussehen
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.event.PopupMenuEvent;

public class MySql {

    private static Connection conn;

    public static void connect() {
        try {
            // Lade den JDBC Treiber:
            String driverName = "com.mysql.jdbc.Driver";
            Class.forName(driverName);

            // erstelle eine Verbindung zur Datenbank "schluesselprogramm"
            String serverName = "localhost";
            String mydatabase = "schluesselprogramm";

            // jetzt eine JDBC url:
            String url = "jdbc:mysql://" + serverName + "/" + mydatabase;
            String username = "root";
            String password = "";

            // jetzt verbinden:
            conn = DriverManager.getConnection(url, username, password);
            System.out.println("\nDatenbank " + mydatabase + " erfolgreich verbunden");
        }
        // und wenns nicht geklappt hat, 2 Gruende moeglich:
        catch (ClassNotFoundException e) {
            System.out.println("\nKann den Datenbanktreiber nicht finden\n");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("\nKann die Datenbank nicht verbinden!\n");
            e.printStackTrace();
        }
    }

    public static List<Lehrer> getLehrer() throws SQLException {

        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("Select pname from pverz");
        List<Lehrer> allLehrer = new ArrayList<Lehrer>();
        while (rs.next()) {
            allLehrer.add(new Lehrer(rs.getString(1)));

        }
        stmt.close();

        return allLehrer;
    }

    public class Lehrer {

        private String name;

        // get setter Konstuktor
    }

    public void jComboBox1popupMenuWillBecomeVisible(PopupMenuEvent e) {
        boolean initialized = false;
        if (!initialized) {
            ComboBoxModel model = new DefaultComboBoxModel(MySQL.getLehrer().toArray());
            jComboBox1.setModel(model);
            initialized = true;
        }
    }
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
J Kleines Helikopterspiel programmieren AWT, Swing, JavaFX & SWT 2
J Verbesserungsvorschläge?! Kleines AWT Programm AWT, Swing, JavaFX & SWT 4
T Kleines Infofenster einblenen lassen AWT, Swing, JavaFX & SWT 3
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
F Kleines Fenster am Bildschirmrand AWT, Swing, JavaFX & SWT 3
C Swing Kleines Programm mit SWING unter Verwendung von MVC AWT, Swing, JavaFX & SWT 5
L Kleines Lückenprogrämmchen AWT, Swing, JavaFX & SWT 3
C kleines Chatprogramm, probleme mit JTextArea AWT, Swing, JavaFX & SWT 9
R JTable Header - will links kleines icon hinzufuegen..? AWT, Swing, JavaFX & SWT 6
F kleines problem beim suchen in einem String AWT, Swing, JavaFX & SWT 15
T Ein kleines buntes Farbproblem AWT, Swing, JavaFX & SWT 7
V Thread als kleines splash AWT, Swing, JavaFX & SWT 13
C Mein erstes kleines Swing-Projekt - Probleme AWT, Swing, JavaFX & SWT 8
H Kleines SwingProgramm Frage AWT, Swing, JavaFX & SWT 14
H Kleines Malprogramm AWT, Swing, JavaFX & SWT 36
J kleines Zeichenprogramm AWT, Swing, JavaFX & SWT 12
J Kleines Layout Problem AWT, Swing, JavaFX & SWT 5
B Kleines JFrame Problem (oder doch größer?) AWT, Swing, JavaFX & SWT 2
P Warum braucht mein kleines Programm 20 MB Speicher? AWT, Swing, JavaFX & SWT 13
D Kleines aber dummes Problem mit Turtle. AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben