Events auslösen

ydnaso

Mitglied
Hallo zusammen,
mache gerade meine ersten Schritte in Java und werde euch wohl erstmal ein bisschen mit meinen Anfängerfragen belästigen. Habe zuletzt nur c# programmiert. Einleitungen und diverste Unterschiede habe ich mir bereits durchgelesen und nun bei den ersten Codebeispielen.

Die erste Frage nun, wie geht man vor, wenn man mittels eines Button clicks, ein Event auslösen möchte, dass eine bestimmte Methode ausführt.

Java:
Display display = new Display();
	        Shell shell = new Shell(display);
	        shell.setText("Test");
	        
	        Button b = new Button(shell, SWT.PUSH);
	        b.setText("Mein Button");
	        b.pack();
...

Mit dem Klick auf "Mein Button" soll nun die Methode DoSomething gestartet werden.

Vorab vielen Dank,
ich weiß das google viel Treffer bei Events mir liefert, aber fürs Verständniss wäre eine konkrete Antwort hilfreicher.
 

faetzminator

Gesperrter Benutzer
Java:
b.addSelectionListener(new SelectionListener() {
    public void irgendeineMethodeWelcheDuImplementierenMusst() {
        doSomething();
    }
});
 

faetzminator

Gesperrter Benutzer
@nillehammer: er spricht nicht von AWT oder Swing, sondern von SWT ;)
@TO: aber nillehammer's Erklärung stimmt natürlich trotzdem - nur die Klassen und Methoden nicht.
 
N

nillehammer

Gast
faetzminator hat gesagt.:
@nillehammer: er spricht nicht von AWT oder Swing, sondern von SWT
Ups, hätte mir nicht nur die Frage, sondern auch den Code etwas genauer anschauen sollen. Dann wär's mir aufgefallen. :autsch:
 

ydnaso

Mitglied
Erstmal danke für eure Antwort.

Ich habe nun eure Vorschläge implementiert. Aber bekam ein paar Fehler...
Daraufhin habe ich etwas experimentiert und mit folgendem Code passiert das, was
ich machen wollte.

Java:
 b.addSelectionListener(new SelectionAdapter() {
	        	public void widgetSelected(SelectionEvent e) {
	        		DoSomething(0);
	        	}
	        	});

Unklar ist mir jedoch, was genau das widgetSelected macht, weil implementiert habe ich nur die
DoSomething Methode.

Auch auf die Gefahr hinweg, dass es offTopic wird. In der DoSomething() gebe ich in einer Textbox einen
Text aus, der nun auch nach dem klicken erscheint.
Im Eclipse habe ich aber an die Stelle einen Breakpoint gesetzt (Rechtsklick, Toggle Breakpoint).
Ich hätte erwartet, dass nach dem Klick an dem Punkt angehalten wird, aber scheinbar wird er ignoriert.

Im Visual Studio funktioniert das zumindest so...
 
T

Tomate_Salat

Gast
Wie startest du dein Projekt? In Visual Studio arbeitet man ja (nach eigener Erfahrung) immer im Debugmodus. Das ist bei Java nicht zwingend der Fall. Über Eclipse kannst du einmal normal Starten (nehme an, dass machst du so) und einmal im Debugmodus. Für den Breakpoint musst du natürlich letzteren Startmodus auswählen. (Entweder über rechtsklick->Debug As-> Java Application) oder in der Toolbar.

zu widgetSelected:
das implementierst du auch (über eine anonyme Klasse). Diese wird von dem Widget aufgerufen, sobald ein Event ausgelöst wird.

zum Schluss: In Java schreibt man Methoden lowerCamelCase.
 

ydnaso

Mitglied
Ja danke. Daran war es auch gelegen.
Nun funktioniert das wie erwartet. Die Navigation ist noch etwas gewöhnungsbedürftig.

Wie handhabt man "globale" Variablen?

In c# habe ich Variablen, wie Zahlen, etc. die Methodenübergreifend in einer Klasse verwendet
werden per private int Test innerhalb der Klasse definiert. Das habe ich auch versucht, allerdings
ist die Variable in der Methode nicht bekannt?

Mal besser ausgedrückt:
Java:
import.....

  public class TestSWT {

  //Hier die globale Var
  public int zaehler;

      public static void main(String[] args)
      {....}

      private static void doSomething(int test)
      {...}
  }
}
Auf jeden Fall möchte ich erreichen, dass die Variable zaehler sowohl im Main, also auch im
doSomething verfügbar ist. Wie macht man dies?
 

faetzminator

Gesperrter Benutzer
Wenn die Variable auch static definiert wird. Das ist aber überhaupt nicht zu empfehlen. Warum nicht [c]doSomething()[/c] "unstatisch" machen?
 

ydnaso

Mitglied
Wenn die Variable auch static definiert wird. Das ist aber überhaupt nicht zu empfehlen. Warum nicht [c]doSomething()[/c] "unstatisch" machen?

Weil der Compiler beim Definieren des Events dann "meckert"...
Aber mir ist schon aufgefallen, dass der Eclipse relativ empfindlich auf static und non static reagiert.
Meinem Visual Studio ist da relativ schmerzfrei...

ok, mit static funktionierts.
Naja ich merk schon, wird nicht ganz so einfach wie erwartet.

Letzten Anmerkung. Ich habe von Layout manager gelesen? Gibt es was weitverbreitetes und wie
funktionieren diese?
 
T

Tomate_Salat

Gast
Naja, dass sind zum Teil echt Grundlagen. Das static hat nix mit Eclipse, sondern mit Java zu tun. Das sollte es ähnlich auch in C# geben. Wenn du eine non-static-methode aufrufen willst, brauchst du eben ein Objekt.

Globale Variablen sind keine schöne Sache. Wenn man etwas Globales (z.B. Singleton) braucht, sollte man das über DI lösen (z.B. Guice).

Zu LayoutManagern: da gibt es sicher haufenweise Material im Internet. Die sind dafür zuständig, wie deine Elemente auf dem GUI angeordnet werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Ical4j - Lazy Loading von Events? Java Basics - Anfänger-Themen 2
D Events verarbeiten Java Basics - Anfänger-Themen 1
nonickatall Erste Schritte Events Dokumentation/Tutorial Java Basics - Anfänger-Themen 1
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
M Best Practice Events für jeden, oder für die Allgemeinheit "registrieren"? Java Basics - Anfänger-Themen 5
O Wie Log4J - Ausgaben/Events auffangen?! Java Basics - Anfänger-Themen 3
Thallius Best Practice Events zwischen eigenen Klassen Java Basics - Anfänger-Themen 2
G Events schreiben, solange Programm läuft Java Basics - Anfänger-Themen 6
H [JAVA] NetBeans GUI Builder - Events Java Basics - Anfänger-Themen 10
G Erste Schritte Window Events in Java Java Basics - Anfänger-Themen 6
T fenster schliesen und mouse events in einer nicht abstrakten klasse Java Basics - Anfänger-Themen 6
S Dauer eines Events anhandUnterschied berechnen? Java Basics - Anfänger-Themen 3
Nicer Maus Events Java Basics - Anfänger-Themen 2
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
R wieso Nullpoint und was mit Events ? Java Basics - Anfänger-Themen 14
F Reihenfolge in der Events abgearbeitet werden Java Basics - Anfänger-Themen 2
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
B Events behandeln Java Basics - Anfänger-Themen 4
A Events werfen/feuern wenn bestimtm methode ausgeführt wird Java Basics - Anfänger-Themen 3
E import org.eclipse.swt.Events.PaintListener; Java Basics - Anfänger-Themen 1
M Urheber von Events ermitteln Java Basics - Anfänger-Themen 5
S Eigene Events werfen? Java Basics - Anfänger-Themen 6
G Events manuell aulösen Java Basics - Anfänger-Themen 3
C Listener und Events Java Basics - Anfänger-Themen 10
D Events nicht bei den jeweiligen Objekten? Java Basics - Anfänger-Themen 3
G PropertyChangeListener empfängt Events doppelt Java Basics - Anfänger-Themen 5
F Eigene Klasse für Events Java Basics - Anfänger-Themen 10
G Events Java Basics - Anfänger-Themen 8
S Keylistener-Events hochreichen Java Basics - Anfänger-Themen 4
H Problem mit Events bzw. Referenzen Java Basics - Anfänger-Themen 4
H Events Java Basics - Anfänger-Themen 5
G Loop blockt alle Events Java Basics - Anfänger-Themen 7
D Probleme mit key events Java Basics - Anfänger-Themen 6
S Events Java Basics - Anfänger-Themen 11
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
D Events Java Basics - Anfänger-Themen 4
G Events Java Basics - Anfänger-Themen 2
E Events nicht an aufrufendes Objekt schicken Java Basics - Anfänger-Themen 23
R events . usw Java Basics - Anfänger-Themen 6
S winXP -> window-events Java Basics - Anfänger-Themen 2
D [Problem] Events Java Basics - Anfänger-Themen 3
S Eigene Exception Schreiben und Welche Auslösen wie ? Java Basics - Anfänger-Themen 7
Z Exception auslösen Java Basics - Anfänger-Themen 3
S Fehler beim Auslösen des ActionListeners in Verbindung mit einer Queue Java Basics - Anfänger-Themen 5
M readXYZ von DataInputStream abbrechen/timeout auslösen Java Basics - Anfänger-Themen 6
M JTextField durch Button auslösen Java Basics - Anfänger-Themen 9
J Funktion Auslösen über JComboBox Java Basics - Anfänger-Themen 2
N Mous Click in einer beliebigen Aplikation auslösen Java Basics - Anfänger-Themen 2
A Fenster schließen soll Button kontakt auslösen. Java Basics - Anfänger-Themen 12
G Timer manuell auslösen? Java Basics - Anfänger-Themen 3
M Event auslösen (unsinnig gestellt - ignorieren) Java Basics - Anfänger-Themen 4
G Aktionen auslösen, nach Klick auf "Blätter" eines Java Basics - Anfänger-Themen 2
T Event zu bestimmter Uhrzeit auslösen ? Java Basics - Anfänger-Themen 5
J HTTP Request Auslösen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben