Wie funktioniert sleep

Carli

Mitglied
Hallo,
ich habe folgendes code Beispiel:
Java:
_rec.setOutput( "- - - Löschen - - -");
_view.anzeigen(_rec);
try {
	Thread.sleep(3000);
} catch (InterruptedException e2) {
	e2.printStackTrace();
}
Ich dachte erst würde die message ausgegeben und dann 3 Sekunden gewartet.
Aber Pustekuchen! Es wird erst gewartet und dann die Ausgabe gemacht.
Verstehe ich da was falsch?

Gruß

Carli
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Eigentlich müssten die Befehle der Reihe nach abgearbeitet werden. Ungeachtet der Sinnhaftigkeit der Reihenfolge.
Versuch mal den Teil, der was anzeigen soll, mit in den try Block zu tun.
 

Carli

Mitglied
Ok,
Teil 1
Java:
/**
 * 
 */
package org.drk.ov.test.progs.view;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.net.URL;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
import javax.swing.border.Border;

import org.drk.ov.all.sub.SpringUtilities;
import org.drk.ov.all.sub.SpringUtilities_button;
import org.drk.ov.test.subs.Att_rec;

/**
 * @author khm
 * 
 * Inventare Verwaltung - Attribute Pflege
 * 
 */
public class AttPflView extends JDialog {
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private boolean DEBUG = false;
	
	String		sPrg = this.getClass().getSimpleName();
	String		sPrgTxt = " - Inventar Verwaltung Attribut Plege";
	String		sSvol = "_PDFs\\";
	String		sPrgNme = sPrg + sPrgTxt;
	String		sIcon = "../../../images/RK.gif";

	JPanel						mainPane;
	JPanel						bearbeitungsPane;
	JPanel						buttonPane;
    JPanel						outputPane;

    JTextField					tF_Output;

	// Ein- / Ausgabefelder
	public JTextField			tF_Id;
	public JTextField			tF_Wert;
	public JTextField			tF_Ts;
	public JTextField			tF_Wer;

	// Buttons
	private JButton				btnAen = new JButton("ändern");
	public static final String	cmdAen = "chg"; 
	private JButton				btnDel = new JButton("löschen");
	public static final String	cmdDel = "del"; 
	private JButton				btnAbb = new JButton("abbrechen");
	public static final String	cmdAbb = "abbruch";


	public AttPflView() {
		if (DEBUG) System.out.println("<AttPflView()>" );
		if (DEBUG) System.out.println( sPrgNme );
		
        setModal(true);
		setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
		setSize(600,350);
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
		setLocation( (d.width - getSize().width ) / 2, 
				     (d.height - getSize().height) / 2 ); 
		URL url = getClass().getResource(sIcon);
		if(url != null) { setIconImage((new ImageIcon(url)).getImage()); }
		setTitle("DRK OV Pfeddersheim - " + sPrgNme);
		
		
		//A border that puts 10 extra pixels at the sides and
		//bottom of each pane.
		Border paneEdge = BorderFactory.createEmptyBorder(20,20,20,20);

		mainPane = new JPanel();
		mainPane.setBorder(paneEdge);
		mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));

        // - - - Bearbeitungsfläche - - -
 		bearbeitungsPane = new JPanel();
        bearbeitungsPane.add(erzeugeBearbeitungsfläche());
		mainPane.add(bearbeitungsPane,BorderLayout.NORTH);

		// - - - Buttonfläche - - -
		// erst einem horizontalen separator
		mainPane.add(new JSeparator(JSeparator.HORIZONTAL),	BorderLayout.LINE_START);
		buttonPane = new JPanel();
		buttonPane.add(erzeugeButtonfläche());
		mainPane.add(buttonPane,BorderLayout.SOUTH);

        // - - - Ausgabefläche - - -
		// erst einem horizontalen separator
		mainPane.add(new JSeparator(JSeparator.HORIZONTAL),	BorderLayout.LINE_START);
        outputPane = new JPanel(new SpringLayout());
        outputPane.setBounds(1, 1, 600, 20);

		{
			tF_Output = new JTextField();
			tF_Output.setEditable(false);
			tF_Output.setFont(new java.awt.Font("Arial",0,12));
			tF_Output.setSize(600,40);
			outputPane.add(tF_Output);

			//Lay out the panel.
			SpringUtilities.makeCompactGrid(outputPane,
											1, 1,		//rows, cols
											10, 10,     //initX, initY
											10, 10);	//xPad, yPad
		}
		mainPane.add(outputPane,BorderLayout.NORTH);

        add(mainPane);
	}

	/**
	 * 
	 * @return
	 */
	protected JComponent erzeugeBearbeitungsfläche() {
		if (DEBUG) System.out.println("- JComponent erzeugeBearbeitungsfläche()" );
		String[]	labelsStr = {"Rec-Nr", "Wert:", "Timestamp"};
		int numPairs = labelsStr.length;
		
		//Create and populate the panel.
		JPanel p = new JPanel(new SpringLayout());
		JLabel[] labels = new JLabel[labelsStr.length];
		JComponent[] fields = new JComponent[labelsStr.length];
		int fieldNum = 0;
        
		// - 0 -
		tF_Id = new JTextField(5);
		tF_Id.setEditable(false);
		fields[fieldNum++] = tF_Id;

		// - 1 -
		tF_Wert = new JTextField(5);
		fields[fieldNum++] = tF_Wert;

		// - 2 -
		tF_Ts = new JTextField(15);
		tF_Ts.setEditable(false);
		fields[fieldNum++] = tF_Ts;


		for (int i = 0; i < numPairs; i++) {
			labels[i] = new JLabel(labelsStr[i], JLabel.TRAILING);
			labels[i].setLabelFor(fields[i]);
			p.add(labels[i]);
			p.add(fields[i]);
		}

		//Lay out the panel.
		SpringUtilities.makeCompactGrid(p,
										labelsStr.length, 2, //rows, cols
										10, 10,        //initX, initY
										10, 10);       //xPad, yPad

		return p;
	}

   /**
    * 
    * @return
    */
	protected JComponent erzeugeButtonfläche() {
		if (DEBUG) System.out.println("- JComponent erzeugeButtonfläche()" );
        //Create and populate the panel.
		JPanel p = new JPanel(new SpringLayout());

		btnAen.setActionCommand(cmdAen);
		btnAen.setFont(new java.awt.Font("Arial",0,12));
		btnAen.setSize(200,30);
		p.add(btnAen);

		btnAbb.setActionCommand(cmdAbb);
		btnAbb.setFont(new java.awt.Font("Arial",0,12));
		btnAbb.setSize(200,30);
		p.add(btnAbb);

		btnDel.setActionCommand(cmdDel);
		btnDel.setFont(new java.awt.Font("Arial",0,12));
		btnDel.setSize(200,30);
		p.add(btnDel);

        //Layout the panel.
        SpringUtilities_button.makeCompactGrid(p,
                                        1, 3,          //rows, cols
                                        10, 10,        //initX, initY
                                        40, 10);       //xPad, yPad

        return p;
    }

	/**
	 * 
	 * @param l
	 */
	public void setListener(ActionListener l) {
		if (DEBUG) System.out.println("- void setListener(ActionListener al) " + l.toString() );
		this.btnAen.addActionListener(l);
		this.btnDel.addActionListener(l);
		this.btnAbb.addActionListener(l);
	}

	/**
	 * 
	 * @param rec
	 */
	public void anzeigen(Att_rec rec) {
		if (DEBUG) System.out.println("- void anzeigen(AttPflRec_ rec) "  + rec.toString() );
		tF_Id.setText(String.valueOf(rec.getWid()));
		tF_Wert.setText(rec.getWert());
		tF_Output.setText(rec.getOutput());
	}

	public String getWert() {
		return tF_Wert.getText();
	}
}
Teil 2

Java:
package org.drk.ov.test.progs.controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import org.drk.ov.test.progs.model.AttPflModel;
import org.drk.ov.test.progs.view.AttPflView;
import org.drk.ov.test.subs.Att_rec;

/**
 * 
 * @author khm
 *
 */
public class AttPflContr {
	private static boolean DEBUG = true;

	public AttPflView		_view;
	public  AttPflModel		_model;
	public Att_rec			_rec;
	
	/**
	 * 
	 * @param _view
	 * @param _model
	 * @param tabelle
	 * @param wid
	 */
	public AttPflContr(AttPflView _view, AttPflModel _model, String tabelle, int wid, int type ) {
		if (DEBUG) System.out.println( "AttPflContr(AttPflView _view, AttPflModel _model, String tabelle, int wid, int type\n" + _view.toString() + "\n" + _model.toString() + "\n" + tabelle + " " + wid + " " + type );
		this._model = _model;
		this._view = _view;

		addListener();
		
		_rec = new Att_rec();
		_rec.setTabelle( tabelle );
		_rec.setWid( wid );
		_rec.setTid(type);
		
		_model.anfrage(_rec);
		if (DEBUG) System.out.println(_rec.toString());
		_view.anzeigen(_rec);

	}

	private void addListener() {
		if (DEBUG) System.out.println( "\nPfl - void addListener()" );
		_view.setListener(new MyActionListener());
	}

	/**
	 * 
	 * @author khm
	 *
	 */
	class MyActionListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			if (DEBUG) System.out.println("\nPfl - MyActionListener - void actionPerformed(ActionEvent e) \n" + e.toString());
			String t="";
			switch (e.getActionCommand()) {
			case AttPflView.cmdAen :
				_rec.setWert(_view.getWert());
				if (DEBUG) System.out.println(_rec.toString());
				_model.aendern(_rec);
		       	if (t.length() > 1){
		       		System.out.println( "Fehler bei Ändern: " +  t);
		       		_view.anzeigen(_rec);
		       	}
		       	_view.dispose();
				break;
			case AttPflView.cmdDel :
	       		try {
					_rec.setOutput( "- - - Löschen - - -");
		       		_view.anzeigen( _rec );
		       		_model.loeschen( _rec );
		       		if ( _rec.isNotOk() ){
			       		_view.anzeigen( _rec );
		       		}
					Thread.sleep(3000);
				} catch (InterruptedException e2) {
					e2.printStackTrace();
				}

//	       		_view.dispose();
				break;
			case AttPflView.cmdAbb :
				_view.dispose();
				break;
			}
		}
	}
}
ich hoffe das bringst.

Gruß

Carli
 
Zuletzt bearbeitet:

turtle

Top Contributor
Es wird erst gewartet und dann die Ausgabe gemacht.
Diese Aussage passt NICHT zum Code-Ausschnitt, den du gezeigt hast.
Das kann bedeuten, das es
  1. falscher Codeteil ist
  2. Swing-EDT-Problem ist
Punkt 1 ist wohl unwahrscheinlich.

Punkt 2 ist meine Vermutung, das du von dem was du siehst, ableitest wie das Programm läuft. Das muss aber nicht immer zusammenpassen. Ich vermute nämlich, das du den Swing-EDT nicht arbeiten lässt und er deshalb nicht die GUI updaten kann.

Um dies zu verifizieren würde ich an den relevanten Stellen mal ein System.out.println einbauen und schauen, ob die Ausgabe angezeigt werden.
Java:
rec.setOutput( "- - - Löschen - - -");
System.out.println("Löschen");
_view.anzeigen(_rec);
System.out.println("view anzeigen");
try {
    Thread.sleep(3000);
} catch (InterruptedException e2) {
    e2.printStackTrace();
}
System.out.println("Nach sleep");
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
F FileCreation - PrintWriter funktioniert nicht... Java Basics - Anfänger-Themen 1
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1
T Methode in Klasse funktioniert nicht Java Basics - Anfänger-Themen 14
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
C Warum funktioniert 'instanceof' bei generics nicht? Java Basics - Anfänger-Themen 4
M Frage, wie dieser Code funktioniert, bzw. weshab er bei mir nicht funktioniert Java Basics - Anfänger-Themen 4
L Level Reset funktioniert nicht Java Basics - Anfänger-Themen 3
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
J Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 8
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22

Ähnliche Java Themen


Oben