Hallo
Situation: Teste ein wenig wie ich kombiniert mit einem Thread die GUI ändern kann. Es handelt sich nur um eine Test-Klasse.
1. Ich will später das ich in einer anderen Klasse ne Abfrage JFileChooser machen kann und das in der GUI angezeigt wird der Cod in welcher die Abfrage gemacht wird erst danach logischerweise weitergeführt ist.
Mit dem Swingworker wird aber erst am Schluss die Abfrage gemacht, wenn der ganze restliche Code durch ist.
Problem: Es funktioniert nicht
Class zum ändern, welche momentan nichts macht.
Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.awt.Insets.<init>(Unknown Source)
at sun.awt.windows.WToolkit.getScreenInsets(Native Method)
at sun.awt.windows.WToolkit.getScreenInsets(Unknown Source)
at java.awt.Window.init(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at javax.swing.JFrame.<init>(Unknown Source)
at Gui.<init>(Gui.java:35)
at Gui.<init>(Gui.java:14)
at Gui.<init>(Gui.java:14)
at Gui.<init>(Gui.java:14)
Situation: Teste ein wenig wie ich kombiniert mit einem Thread die GUI ändern kann. Es handelt sich nur um eine Test-Klasse.
1. Ich will später das ich in einer anderen Klasse ne Abfrage JFileChooser machen kann und das in der GUI angezeigt wird der Cod in welcher die Abfrage gemacht wird erst danach logischerweise weitergeführt ist.
Mit dem Swingworker wird aber erst am Schluss die Abfrage gemacht, wenn der ganze restliche Code durch ist.
Problem: Es funktioniert nicht
Java:
import java.awt.BorderLayout;
public class Gui extends JFrame {
private JPanel contentPane;
JLabel lblNewLabel;
Thread t1=new Thread(new GuiChange(new Gui()));
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Gui frame = new Gui();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Gui() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
lblNewLabel = new JLabel("NO");
lblNewLabel.setBounds(56, 55, 56, 16);
contentPane.add(lblNewLabel);
t1.start();
}
}
Class zum ändern, welche momentan nichts macht.
Java:
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
public class GuiChange implements Runnable {
Gui guiC;
public GuiChange(Gui gui) {
guiC=gui;
}
@Override
public void run() {
// TODO Auto-generated method stub
}
}
Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.awt.Insets.<init>(Unknown Source)
at sun.awt.windows.WToolkit.getScreenInsets(Native Method)
at sun.awt.windows.WToolkit.getScreenInsets(Unknown Source)
at java.awt.Window.init(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at javax.swing.JFrame.<init>(Unknown Source)
at Gui.<init>(Gui.java:35)
at Gui.<init>(Gui.java:14)
at Gui.<init>(Gui.java:14)
at Gui.<init>(Gui.java:14)