Moin an alle,
ich programmiere derzeit mit Java-Eclipse (3.1) ein kleines Programm für Sportübungen. Auf der Console läuft das Programm auch ohne Probleme. Nur wenn ich das ganze in ein Programm mit Oberfläche packen möchte, wird der erzeugte Text erst nachdem das Programm fertig ist auf die "JTextArea" ausgegeben. Ich hätte aber jetzt ganz gern, dass wenn ich z.B. dies Schleife hier habe:
auch nach jeder Sekunde eine Ziffer ausgeben wird und nicht nach 10 Sekunden auf einen Schlaf alle Zahlen. Kann mir jemand 'n Tipp geben, mit welchen Pane bzw. mit welcher Methode ich das am besten mache? Hier der restliche Programmcode:
Gruß alphaChill
[Edit] Habe eben das Programm mal nach dieser Anleitung (http://www.uni-koeln.de/rrzk/kurse/unterlagen/java/allg/eclipse/JarExport.html) exportiert und raus kam das hier:
http://main.ma.funpic.de/ebayupload/sport.jar
Das Programm lässt sich immerhin schon mal öffnen und schließen, aber wenn ich auf "Start" klicke sehe ich eine "10" und das war's ... warum wird die Schleife nicht ausgeführt? Ich versteht's nicht...
ich programmiere derzeit mit Java-Eclipse (3.1) ein kleines Programm für Sportübungen. Auf der Console läuft das Programm auch ohne Probleme. Nur wenn ich das ganze in ein Programm mit Oberfläche packen möchte, wird der erzeugte Text erst nachdem das Programm fertig ist auf die "JTextArea" ausgegeben. Ich hätte aber jetzt ganz gern, dass wenn ich z.B. dies Schleife hier habe:
Code:
for (int i = 10; i > 0; i--) {
anzeigefenster.append(String.valueOf(i) + "\n");
Console.println(i);
try {
Thread.sleep(1000);
}
catch (InterruptedException e2) {
e2.toString();
}
}
auch nach jeder Sekunde eine Ziffer ausgeben wird und nicht nach 10 Sekunden auf einen Schlaf alle Zahlen. Kann mir jemand 'n Tipp geben, mit welchen Pane bzw. mit welcher Methode ich das am besten mache? Hier der restliche Programmcode:
Code:
package b;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import support.Console;
public class Test extends JFrame {
private JPanel jContentPane = null;
private JLabel statusLabel = null;
private JPanel Panelcenter = null;
private JButton btnbeenden = null;
private JButton btnokay = null;
private JScrollPane jScrollPane = null;
private JTextArea anzeigefenster = null;
/**
* This method initializes Panelcenter
*
* @return javax.swing.JPanel
*/
private JPanel getPanelcenter() {
if (Panelcenter == null) {
Panelcenter = new JPanel();
Panelcenter.setLayout(null);
Panelcenter.add(getBtnbeenden(), null);
Panelcenter.add(getBtnokay(), null);
Panelcenter.add(getJScrollPane(), null);
}
return Panelcenter;
}
/**
* This method initializes btnbeenden
*
* @return javax.swing.JButton
*/
private JButton getBtnbeenden() {
if (btnbeenden == null) {
btnbeenden = new JButton();
btnbeenden.setBounds(new java.awt.Rectangle(30, 382, 92, 24));
btnbeenden.setText("Beenden");
btnbeenden.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
}
return btnbeenden;
}
/**
* This method initializes btnokay
*
* @return javax.swing.JButton
*/
private JButton getBtnokay() {
if (btnokay == null) {
btnokay = new JButton();
btnokay.setLocation(new java.awt.Point(158, 382));
btnokay.setText("Start");
btnokay.setSize(new java.awt.Dimension(92, 24));
btnokay.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
for (int i = 10; i > 0; i--) {
anzeigefenster.append(String.valueOf(i) + "\n");
Console.println(i);
try {
Thread.sleep(1000);
}
catch (InterruptedException e2) {
System.out.println(e2.getMessage());
}
}
}
});
}
return btnokay;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(18, 12, 266, 357));
jScrollPane.setViewportView(getAnzeigefenster());
}
return jScrollPane;
}
/**
* This method initializes anzeigefenster
*
* @return javax.swing.JTextArea
*/
private JTextArea getAnzeigefenster() {
if (anzeigefenster == null) {
anzeigefenster = new JTextArea();
}
return anzeigefenster;
}
/**
* @param args
*/
public static void main(String[] args) {
Test t1 = new Test();
}
/**
* This is the default constructor
*/
public Test() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(320, 480);
this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
this.setContentPane(getJContentPane());
this.setTitle("Zeitplaner");
this.setVisible(true);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
statusLabel = new JLabel();
statusLabel.setText("(c) 2007, Thomas Jäger");
statusLabel
.setBorder(javax.swing.BorderFactory
.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
statusLabel
.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(statusLabel, java.awt.BorderLayout.SOUTH);
jContentPane.add(getPanelcenter(), java.awt.BorderLayout.CENTER);
}
return jContentPane;
}
} // @jve:decl-index=0:visual-constraint="154,34"
Gruß alphaChill
[Edit] Habe eben das Programm mal nach dieser Anleitung (http://www.uni-koeln.de/rrzk/kurse/unterlagen/java/allg/eclipse/JarExport.html) exportiert und raus kam das hier:
http://main.ma.funpic.de/ebayupload/sport.jar
Das Programm lässt sich immerhin schon mal öffnen und schließen, aber wenn ich auf "Start" klicke sehe ich eine "10" und das war's ... warum wird die Schleife nicht ausgeführt? Ich versteht's nicht...