Hallo Zusammen,
ich habe folgendes Problem und finde aktuell keine Lösung des ganzen.
Ich habe mit einem Kollegen zusammen ein relativ großes Projekt in Java Swing mit NetBeans entwickelt.
Dabei gibt es eine Hauptklasse, welche nahezu das komplette Frontpanel der Software beinhaltet.
Diese Hauptklasse beinhaltet u.a. mehrere Threads und ist mittlerweile sehr groß und unübersichtlich geworden. Jetzt möchte ich gerne einige Threads auslagern in eigene Klassen und das ganze etwas umstrukturieren.
Leider habe ich dabei das Problem, dass die Threads auf Frontpanelelemente (z.B. ProgressBar) der Hauptklasse zugreifen müssen.
Ich habe schon versucht mir einfach Get/Set Methoden in der Hauptklasse zu generieren und wollte diese dann aus dem ausgelagerten Thread aufrufen. Damit ich aber darauf zugreifen kann, möchte die ThreadKlasse, dass die Methode static ist. Da das Control (z.B. ProgressBar) aber nicht static ist, kann ich darauf aber nicht zugreifen.
Habt ihr eine Idee für mich, wie ich das hinbekommen kann?
Ich hänge hier mal ein ganz vereinfachtes Beispiel an.
Hauptklasse:
Jetzt möchte ich im Thread auf die Progressbar zugreifen:
Ich habe jetzt nur schnell etwas zusammen kopiert, damit man die Problematik versteht. Ich weiß selbst, dass dieser Code genau so nicht lauffähig wäre. Mir geht es nur darum aus dem Thread heraus auf ein Control der Hauptklasse zuzugreifen.
ich habe folgendes Problem und finde aktuell keine Lösung des ganzen.
Ich habe mit einem Kollegen zusammen ein relativ großes Projekt in Java Swing mit NetBeans entwickelt.
Dabei gibt es eine Hauptklasse, welche nahezu das komplette Frontpanel der Software beinhaltet.
Diese Hauptklasse beinhaltet u.a. mehrere Threads und ist mittlerweile sehr groß und unübersichtlich geworden. Jetzt möchte ich gerne einige Threads auslagern in eigene Klassen und das ganze etwas umstrukturieren.
Leider habe ich dabei das Problem, dass die Threads auf Frontpanelelemente (z.B. ProgressBar) der Hauptklasse zugreifen müssen.
Ich habe schon versucht mir einfach Get/Set Methoden in der Hauptklasse zu generieren und wollte diese dann aus dem ausgelagerten Thread aufrufen. Damit ich aber darauf zugreifen kann, möchte die ThreadKlasse, dass die Methode static ist. Da das Control (z.B. ProgressBar) aber nicht static ist, kann ich darauf aber nicht zugreifen.
Habt ihr eine Idee für mich, wie ich das hinbekommen kann?
Ich hänge hier mal ein ganz vereinfachtes Beispiel an.
Hauptklasse:
Java:
package components;
public class Hauptklasse extends javax.swing.JFrame {
Obj_Cal_Thread obj_cal_thread = null;
public Hauptklasse(){
initComponents();
}
private void initComponents()
{
//automatisch von NetBeans generierter Code
jProgressBarObjCal = new javax.swing.JProgressBar();
}
public void SetProgress(int value)
{
jProgressBarObjCal.setValue(value);
}
public static int main (String args[]) {
new Hauptklasse.setVisible(true);
obj_cal_thread = new Obj_Cal_Thread();
obj_cal_thread.setName("obj_cal_thread");
obj_cal_thread.start();
}
}
Jetzt möchte ich im Thread auf die Progressbar zugreifen:
Code:
package components;
public class Obj_Cal_Thread extends Thread{
Obj_Cal_Thread() {
}
@Override
public void run(){
Hauptklasse.setProgress(0);
}
}
Ich habe jetzt nur schnell etwas zusammen kopiert, damit man die Problematik versteht. Ich weiß selbst, dass dieser Code genau so nicht lauffähig wäre. Mir geht es nur darum aus dem Thread heraus auf ein Control der Hauptklasse zuzugreifen.