GUI mit Datenbankanbindung

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo


ich brauch eure Hilfe. Ich habe eine GUI erstelllt und einer JListe und einem JButton. Sobald ich den Button drücke
wird in einer anderen Klasse eine Datenbankverbindung aufgebaut und ein SQL Statement abgesetzt. In dieser Zeit hängt die GUI.

Meine Idee war die Datenbankklassen von SwingWorker abzuleiten und in der doInBackground() Methode
meinen SQL Verbindungsaufbau SQL Statement einzubauen.
Oder gibt es eine bessere Alternative?

Gruss Stefan
 
S

SlaterB

Gast
wichtig ist nicht, welche Klassen von was erben, sondern wie die Arbeit ausgeführt wird,

im ActionListener musst du einen neuen Thread starten, der die sekundenlange Arbeit erledigt,
das kann ein ganz normaler Thread sein,
oder vielleicht auch ein SwingWorker, was immer das ist
 
G

Guest

Gast
vielen dank erstmal für deine Antwort

mein Problem ist das in dem ActionListener auch noch die JList mit den Daten aus dem Thread gefüllt wird.

Beispiel mit SwingWorker
Code:
button.addActionListener(new java.awt.event.ActionListener() {
		public void actionPerformed(ActionEvent e) {
			
DBAbfrage abfrage = new DBAbfrage ();
abfrage .execute();
Vector<DB> db = abfrage.get();
jlist.setListData(db);
               
		}
});

der JButton bleibt solange "gedrückt" bis die JList gefüllt wird

Gruss Stefan
 
G

Guest

Gast
das stimmt ich bin aber der Meinung das solange diese Abfrage

Code:
Vector<DB> db = abfrage.get();

nicht abgearbeitet ist der Button hängt.

Könntest du Bitte einmal ein Beispiel posten wie man es richtig macht.
 
S

SlaterB

Gast
Code:
button.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
     
              Runnable r = new Runnable() {
                    public void run() {


                            // Code

     
                     }
               };

               new Thread(r).start();
                
      } 
});
 
S

SlaterB

Gast
falls es öfter so sein muss, kann man sich den Code-Overhead sparen durch eine spezielle eigene ActionListener-Klasse, die generell erstmal nen Thread startet:

SlaterB hat gesagt.:
Code:
button.addActionListener(new RunActionListener() { 
      public void actionPerformedRunning(ActionEvent e) { 
                            // Code
      } 
});
oder auch

SlaterB hat gesagt.:
Code:
button.addActionListener(new RunActionListener() { 
      public void run(ActionEvent e) { 
                            // Code
      } 
});
je nachdem, wie man die Hilfsklasse RunActionListener schreibt
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben