Von Datenbank in die JComboBox...

Aber LESEN ist nicht so deine Stärke oder ?
Da steht deutlich um was für einen Typ es sich handelt nämlich um eine MS Access-DB-Datei. Access hat in meinen Augen NICHTS mit Datenbanken zu tun sondern ist lediglich ein dem SQL-Standard angelehntes Datei-Format welches sich auch nur über MS-ODBC oder MS Office Access selbst lesen und editieren lässt.

Vielen hier *dich eingeschlossen* hätte es sehr viel schneller zur Problemlösung verholfen wenn du folgendes in deinen ersten Post geschrieben

DB : ODBC-Datenquelle - MS-Access
Driver : Sun-ODBC

und in den Titel statt dem Wort "Datenbank" "MS-Access" verwendet hättest.

MS-Access und ODBC unterstützen nur sehr wenige SQL-Konstrukte und an den Standard wurde nur angelehnt. Man muss sich auch schon mal von selbst aus etwas GENAU ausdrücken.
 
Hab ich doch versucht, ich wusste doch nicht das MS-Acess eine anlehnung an nen Datei-Format ist! Ich kann auch nur die Noten spielen die ich kenne <.<
(wenn man mal nen Tutorial hätte wo wirklich alles abgedeckt wäre, würde man auch net so Probleme hegen, ich mein ich hab gut 4-5Stunden mit diversen Tutorien zugebracht und keins hat einen sowas wirklich gesagt, im Prinzip bin ich auch nur auf die Lösung gekommen indem ich wirklich alle möglichkeiten durchprobiert habe...)


Jetzt noch was; wie Refresht sich die JComboBox?

Hier mal ein Ansatz:
Java:
 // Lädt die Standorte in die ComboBox
public Vector ladestandorte() {
	Vector vec = new Vector();
	
	
	comboBox.removeAll(); 
		
	try {
	
	verbindungaufbau();
   		Statement stmt1 = con.createStatement();
   		ResultSet rs1 = stmt1.executeQuery("select * from IP");
		
   		while (rs1.next()){
   			vec.add(rs1.getString("Bereichname"));
   		 
   		 }
   	
   	
   	rs1.close();
   	stmt1.close();
   	
   	} catch (Exception e) {}

    return vec;
}

Ich dachte das ich wenn ich den Speichern Button drücke die ComboBox mit einem RemoveAll leere und dann nochmal die Methode aufrufe um sie "frisch" zu füllen. Also habe ich in der obigen Methode, welche quasi meine ComboBox befüllt um comboBox.removeAll() erweitert.
Leider Spuckt da der Compiler eine NullPointer Exception aus, also dachte ich das ich sowas wie "wenn Elemente in der ComboBox sind, dann leere sie". Leider habe ich keine Idee wie man Prüfen kann ob Elemente in der Box sind.
Ich müsste ja quasi fragen ob der Index 0 ist und wenn ja eben weiter machen, wenn nicht Inhalt löschen und neu befüllen, oder?
 
Was Access angeht : dir hätte es eigentlich klar sein müssen als du dich dafür entscheiden hast eine Access-Datei als Datenspeicher zu verwenden. Schließlich musstest du im ODBC-Dialog ja auch eine DATEI auswählen. Richtige Datenbanken laufen dagegen immer als eine Server-Applikation und richten sich in aller Regel auch komplett nach SQL92 ... und nicht nur nach dem was die Entwickler für nötig finden *wenn man sich die Firmen-Politik im Hause MS ansieht trifft es das sehr gut*. Dess weiteren biete die Großen der DB-Industrie auch allerhand Treiber und Connectoren für ihre Datenbanken welche einem Entwickler auf einer einheitlichen Ebene den Zugriff auf die Daten erlaubt. MS tut dies nur unzureichend über ODBC.

Was das aktuliesieren angeht : in der Regel muss nach einer Änderung am Layout oder an dem was sonst noch so dargestellt / gezeichnet wird eine re-validierung des Layouts erfolgen *bei Änderungen am Layout* und auf jeden fall der TOP-MOST-Container *also das Window* neu gezeichnet werden. Dank der automatisch aufgerufenen Methoden paintComponents und paintChildren wird automatisch alles sichbare mit neugezeichnet. Man sollte auch Swing mit double buffering verwenden um ein Flackern dabei zu vermeiden.
 
Ich schreibe also ne Methode refresh und darin validate te ich das Panel und painte alle componente des frames?

ps: ich schreib dir jetzt mal was fürn Programm es werden soll ;)
 
Ähm ... FAST.
Du rufst am Ende der Methode die die JComboBox ändert einfach JFrame.validate(); und da drunter JFrame.update(JFrame.getGraphics()); ...
 
Ähm ... FAST.
Du rufst am Ende der Methode die die JComboBox ändert einfach JFrame.validate(); und da drunter JFrame.update(JFrame.getGraphics()); ...

Funktioniert noch nicht :/

und bei:
Java:
if ( comboBox.getItemCount() > 0 ){
		comboBox.removeAllItems();
	}
kommt das es nen nullpointer Exception gibt :eek:
 
Zuletzt bearbeitet:
Dann ist "comboBox" NULL !
Prüfe deinen Code ganz genau WO comboBox initialisiert wird. Dies muss geschehen BEVOR du manipulationen darauf anwendest.
 
Also
private JComboBox comboBox = new JComboBox(ladestandorte());
wird direkt am anfang erzeugt, und außer ladestandorte() hab ich auch nichts initalisiert?

Wenn ich meine Funktion in ne Methode schreibe, und die aufrufe löscht er den Inhalt, aber befüllt es nicht wieder, obwohl ich in die Funktion auch mein ladestandorte() drin habe... (die Methode befüllt eig die ComboBox)
 
Zuletzt bearbeitet:
Java:
private JComboBox comboBox = new JComboBox(ladestandorte());

Java:
public Vector ladestandorte() {
//...     
    comboBox.removeAll(); 
//...
}

Ich hoffe dir fällt was auf...
 
ach hab ich schon längst abgeändert in comboBox.removeAllItems(), ****t trotzdem nicht :(
Java:
public void refresh (){
	if ( comboBox.getItemCount() > 1 ){
		comboBox.removeAllItems();
		ladestandorte();		
	}
die refresh Methode...
 

Neue Beiträge

Zurück