Hallo ich habe ein Problem und zwar, dass meine Swing-Komponenten nicht mehr reagieren wenn ich gleichzeitig einen sehr rechenintensiven Prozess aufrufe (momentan eine Dauerschleife zum Test (Aufruf Z. 79). Ich möchte aber einige Daten gleichzeitig ausgeben wie z.B. eine ProgressBar oder später so etwas wie Operationen/s.
Naja ich habe natürlich die Suche benutzt und auch eine tolle Lösung gefunden:
www.java-forum.org/de/viewtopic.php?t=8101&highlight=swing+gui+friert+ein
aber ich schaffe es mit meinem Anfängerwissen einfach nicht das auf mein kleines Programm zu übertragen
vielleicht kann mir ja jemand von euch helfen und bitte bitte auch erläutern ich möchte es gerne verstehen.
Hier mein deletantischer Code:
Naja ich habe natürlich die Suche benutzt und auch eine tolle Lösung gefunden:
www.java-forum.org/de/viewtopic.php?t=8101&highlight=swing+gui+friert+ein
aber ich schaffe es mit meinem Anfängerwissen einfach nicht das auf mein kleines Programm zu übertragen
vielleicht kann mir ja jemand von euch helfen und bitte bitte auch erläutern ich möchte es gerne verstehen.
Hier mein deletantischer Code:
Code:
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import java.util.Arrays;
import javax.swing.KeyStroke;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.JTextPane;
import javax.swing.JScrollBar;
import javax.swing.JTextField;
public class RubicsCube2 extends JFrame implements ActionListener {
private JPanel jContentPane = null;
private JProgressBar jProgressBar = null;
private JLabel Fortschritt = null;
private JButton Start = null;
private JTextPane Ausgabe = null;
private JScrollBar jScrollBar = null;
private JProgressBar Schritte = null;
private JTextField Operaration = null;
private JTextField Geschwindigkeit = null;
private JTextField Laufzeit = null;
/**
* This method initializes jProgressBar
*
* @return javax.swing.JProgressBar
*/
private JProgressBar getJProgressBar() {
if (jProgressBar == null) {
jProgressBar = new JProgressBar();
jProgressBar.setBounds(new java.awt.Rectangle(173,523,527,18));
jProgressBar.setValue(10);
jProgressBar.setStringPainted(true);
}
return jProgressBar;
}
/**
* This method initializes Start
*
* @return javax.swing.JButton
*/
private JButton getStart() {
if (Start == null) {
Start = new JButton();
Start.setBounds(new java.awt.Rectangle(60,26,109,28));
Start.setText("Start");
Start.addActionListener( this );
}
return Start;
}
public void actionPerformed(ActionEvent e)
{
if ( e.getSource()==Start )
{
Solution_Generator.Solution_Gen();
jProgressBar.setValue(1+(Solution_Generator.run));
// System.out.println("Nach der "+run+". Schleife:");
Operaration.setText("Operation: "+ Solution_Generator.run);
run();
}
}
/**
* This method initializes Ausgabe
*
* @return javax.swing.JTextPane
*/
private JTextPane getAusgabe() {
if (Ausgabe == null) {
Ausgabe = new JTextPane();
Ausgabe.setBounds(new java.awt.Rectangle(539,62,176,411));
Ausgabe.setContentType("text/html");
}
return Ausgabe;
}
/**
* This method initializes jScrollBar
*
* @return javax.swing.JScrollBar
*/
private JScrollBar getJScrollBar() {
if (jScrollBar == null) {
jScrollBar = new JScrollBar();
jScrollBar.setBounds(new java.awt.Rectangle(84,376,229,19));
jScrollBar.setOrientation(javax.swing.JScrollBar.HORIZONTAL);
}
return jScrollBar;
}
/**
* This method initializes Schritte
*
* @return javax.swing.JProgressBar
*/
private JProgressBar getSchritte() {
if (Schritte == null) {
Schritte = new JProgressBar();
Schritte.setBounds(new java.awt.Rectangle(763,41,18,460));
Schritte.setValue(50);
Schritte.setOrientation(javax.swing.JProgressBar.VERTICAL);
}
return Schritte;
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getOperaration() {
if (Operaration == null) {
Operaration = new JTextField();
Operaration.setBounds(new java.awt.Rectangle(171,481,142,19));
}
return Operaration;
}
/**
* This method initializes Geschwindigkeit
*
* @return javax.swing.JTextField
*/
private JTextField getGeschwindigkeit() {
if (Geschwindigkeit == null) {
Geschwindigkeit = new JTextField();
Geschwindigkeit.setBounds(new java.awt.Rectangle(120,136,101,19));
Geschwindigkeit.setText("geschwindigkeit");
}
return Geschwindigkeit;
}
/**
* This method initializes Laufzeit
*
* @return javax.swing.JTextField
*/
private JTextField getLaufzeit() {
if (Laufzeit == null) {
Laufzeit = new JTextField();
Laufzeit.setBounds(new java.awt.Rectangle(237,136,196,19));
Laufzeit.setText("Laufzeit");
}
return Laufzeit;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
RubicsCube2 application = new RubicsCube2();
application.show();
// Eingaben Check
//Hier sollte eine Prüffunktion entstehen
//Ausgabe der Eingaben
}
/**
* This is the default constructor
*/
public RubicsCube2() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(new java.awt.Rectangle(0,0,800,600));
this.setContentPane(getJContentPane());
this.setTitle("Application");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
Fortschritt = new JLabel();
Fortschritt.setBounds(new java.awt.Rectangle(90,522,76,18));
Fortschritt.setText("Fortschritt:");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJProgressBar(), null);
jContentPane.add(Fortschritt, null);
jContentPane.add(getStart(), null);
jContentPane.add(getAusgabe(), null);
jContentPane.add(getJScrollBar(), null);
jContentPane.add(getSchritte(), null);
jContentPane.add(getOperaration(), null);
jContentPane.add(getGeschwindigkeit(), null);
jContentPane.add(getLaufzeit(), null);
}
return jContentPane;
}
} // @jve:decl-index=0:visual-constraint="10,10"