public boolean return

Status
Nicht offen für weitere Antworten.

Dagobert

Bekanntes Mitglied
Ich habe da mal so eine kleine Frage...
Ich habe in einer Klasse eine Methode die als Rückgabewert einen boolean erwartet.
Nun möchte ich aber, das dieser erst gesendet wird, wenn die linke Maustaste gedrückt wird (auf nem JPanel).
Wie stelle ich das nun an?
Ich habe mir überlegt das ich eine Klassenvariable anlege mit nem boolschem Wert und diese per listener änder.
In der Methode läuft eine while-Schleife die nur darauf wartet das die Variable auf ture gesetzt wird.
Und dann gibt sie die Rückgabe.
Was sagt ihr dazu? Fällt euch eine bessere Idee ein?
mfg. Dagobert
 
S

SlaterB

Gast
> eine Methode die als Rückgabewert einen boolean erwartet.

von wem? die Methode liefert selber den Rückgabewert, weil sie es so will,
da ist das etwas unglücklich formuliert ;)

------

dass eine Operation wartet und gleichzeitig noch eine GUI nicht-blockierend aktiv ist,
erfordert die Arbeit mit Threads, ziemlich komplizierte Sache,
wenn du das kannst, dann sollte sich eigentlich eine solche Frage nicht mehr stellen

jedenfalls klingt das ganz allgemein gesprochen durchaus denkbar,
'irgendwer' könnte warten, bis irgendwo anders eine Variable auf true geesetzt wird, ja,

idealerweise setzt du ein Thread.sleep(50) in die Warteschleife, sonst hast du maximale CPU-Auslastung
 

Marco13

Top Contributor
Hm - das mit der while-Schleife (auch mit einem Thread.sleep drin) ist "busy waiting", und das macht man eigentlich nicht - dafür ist ja der wait/notify-Mechsnismus von Java gedacht....
 
S

SlaterB

Gast
innerhalb einer Methode vor dem Rückgabewert wird das schwer,
dass man das generell anders besser bauen kann stimmt allerdings ganz bestimmt
 

Niki

Top Contributor
Was ist daran kompliziert? Könnte so aussehen:

Code:
public static final Object MONITOR = new Object();

public boolean returnWhenMouseClicked(){
  synchronized(MONITOR){
    try{
      MONITOR.wait();
    }catch(InterruptedException ex){
    }
  }
  return true;
}

public class MouseHandler extends MouseAdapter{
  public void mouseClicked(MouseEvent e){
    synchronized(MONITOR){
      MONITOR.notifyAll();
    }
  }
}
 

Niki

Top Contributor
tfa hat gesagt.:
wait() ohne Wait-Schleife sollte man nicht machen.

Da geb ich dir recht. Also so ist es besser:
Code:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.lang.reflect.InvocationTargetException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class WaitNotifyDemo extends JFrame {

	public static final Object MONITOR = new Object();

	private boolean clicked = false;

	public WaitNotifyDemo() {
		super("WaitNotifyDemo");
		guiInit();
		pack();
		setLocationRelativeTo(null);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	private void guiInit() {
		JPanel p = (JPanel) getContentPane();
		p.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				synchronized (MONITOR) {
					clicked = true;
					MONITOR.notifyAll();
				}
			}
		});
	}

	public void waitTillClicked() {
		while (!clicked) {
			synchronized (MONITOR) {
				try {
					MONITOR.wait();
				} catch (InterruptedException e) {
				}
			}
		}
	}

	/**
	 * @param args
	 * @throws InvocationTargetException
	 * @throws InterruptedException
	 */
	public static void main(String[] args) throws InterruptedException,
			InvocationTargetException {
		final WaitNotifyDemo demo = new WaitNotifyDemo();
		SwingUtilities.invokeAndWait(new Runnable() {
			public void run() {
				demo.setVisible(true);

			}
		});

		new Thread(new Runnable() {
			public void run() {
				System.out.println("wait for click");
				demo.waitTillClicked();
				System.out.println("clicked");

			}
		}).start();
	}

}
 

Dagobert

Bekanntes Mitglied
Vielen Dankt erstmal für eure großartige und großflächige Hifel :toll:

Ich seh schon ich sollte mich dafür tiefer in Threads einarbetien. :###
Thread. start/stop reicht dafür wohl nicht mehr aus.
Ob die GUI blockiert werden soll weis ich selber nicht nicht, ich bin ich noch am überlegen.
Es geht darum das ich momentan einen Würfel Server/Client mache^^ (oder wie ich das nennen soll).
Also der Server erstellt soviele Zufallszahlen zwischen 1 und 6 wie Würfel vorhanden sind. Diese schickt er dann per SIMON (RIM) zu einer Methode am Client die die Grafische ausgabe übernimmt. Doch der Server soll erst weiter machen wenn die Wüfel vom Client weggeklickt wurden.
So ungefähr stelle ich mir das gerade vor...

mfg Dagobert
 
T

tuxedo

Gast
Oha. Netzwerkübergreifend blockieren? Das ist aber keine tolle Idee (damit hälst du auch in SIMON nur unnötig Threads offen). Was spricht denn da gegen das Listener-Prinzip?

- Alex

P.S. (SIMON != RIM != RMI)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C public boolean containsAll(Collection c) Allgemeine Java-Themen 2
G Public oder Private oder Protected Sinn Allgemeine Java-Themen 14
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
T Abgeleitetes Interface public ohne Schlüsselwort "interface"? Allgemeine Java-Themen 3
ReinerCoder Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
I Java: public final Werte: Gute oder schlechte Praxis? Allgemeine Java-Themen 6
C Email mit public-key verschlüsseln Allgemeine Java-Themen 0
W Warum muss void main() public sein? Allgemeine Java-Themen 3
X public Getter ersetzen (Reflection?!) Allgemeine Java-Themen 3
Thallius Warum ist meine private porperty public? Allgemeine Java-Themen 7
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
J public array? Allgemeine Java-Themen 5
N Polygon Klasse mit public Membern Allgemeine Java-Themen 4
P Private und public Allgemeine Java-Themen 2
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
V Public SVN benutzen? Allgemeine Java-Themen 11
O Methoden in abstrakter Klasse: public oder protected? Allgemeine Java-Themen 16
lumo Row Header ist public, zeigt die funktion aber nicht public Allgemeine Java-Themen 8
F packages, public methods, assertions und argumentchecking. Allgemeine Java-Themen 3
MQue public void serialEvent(SerialPortEvent event) Allgemeine Java-Themen 4
M public class Cannix() Allgemeine Java-Themen 5
G Probleme bei String Übergabe um Public Key zu erzeugen ? Allgemeine Java-Themen 6
M ist "public abstract class * extends" möglich? Allgemeine Java-Themen 2
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
T public void init wird nicht aufgerufen Allgemeine Java-Themen 12
S public void actionPerformed Allgemeine Java-Themen 5
D Kein public Konstruktor Allgemeine Java-Themen 4
G private vs. public JRE Allgemeine Java-Themen 3
N this im public static void Allgemeine Java-Themen 3
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
C Boolean Array Allgemeine Java-Themen 4
J Boolean EventListener Allgemeine Java-Themen 2
E Boolean aus Klasse A als String in Klasse B ausgeben Allgemeine Java-Themen 4
A Boolean Array in Allgemeine Java-Themen 3
A boolean und prozesse Allgemeine Java-Themen 2
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
Z Boolean Abfrage gibt kein Boolean zurück, aber warum? Allgemeine Java-Themen 6
Kr0e Synchronisieren: boolean,byte,char ? Allgemeine Java-Themen 2
B boolean return typ verwenden? Allgemeine Java-Themen 5
D falsche Annahme nach korrekter Auswertung (if, boolean) Allgemeine Java-Themen 2
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
I Probleme mit Boolean-Methode Allgemeine Java-Themen 4
D Boolean Listener? Allgemeine Java-Themen 28
R boolean im Bean abfragen Allgemeine Java-Themen 18
E boolean Array in ein byteArray mit derLänge 5 Allgemeine Java-Themen 6
S Problem mit Boolean Variablen Allgemeine Java-Themen 8
B boolean array = byte array (platzverbrauch) Allgemeine Java-Themen 6
J Vector - Boolean Allgemeine Java-Themen 24
H boolean wert ändern Allgemeine Java-Themen 2
L boolean aus der main übergeben? Allgemeine Java-Themen 12
rosima26 Unterschiedliche Werte bei return/print Allgemeine Java-Themen 12
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
I Java Optionals mit return-Block Allgemeine Java-Themen 2
R missing return statement Allgemeine Java-Themen 13
V int Array einer return Methode übergeben? Allgemeine Java-Themen 4
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
B XAResource[] return statement Allgemeine Java-Themen 3
V Wildcard aus Parameter in return type Allgemeine Java-Themen 2
P Return oder Global Allgemeine Java-Themen 3
W Rekursion-Probleme mit return Allgemeine Java-Themen 35
Dragonfire Code Konvention for-Schleife / return Allgemeine Java-Themen 15
R return in try-catch-Blöcken Allgemeine Java-Themen 6
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
H return bei Methode Allgemeine Java-Themen 2
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
hdi dynamische return-Werte Allgemeine Java-Themen 15
M Problem mit return-werten Allgemeine Java-Themen 35
B Warum return type Object ? Allgemeine Java-Themen 4
M return-Statement Allgemeine Java-Themen 5
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
M java-doc: @return mehrzeilig gestalten Allgemeine Java-Themen 3
L return-Funktion Allgemeine Java-Themen 5
L return Funktion Allgemeine Java-Themen 6
G return bei generiertem code Allgemeine Java-Themen 6
S Fehler beim return eines String Arrays Allgemeine Java-Themen 3
Fredy Return by value mit String?? Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben