Window Listener, Exit, bin am Verzweifeln

Status
Nicht offen für weitere Antworten.

snoop83

Mitglied
Fragen über Fragen und ich komme einfach nicht weiter. Nutze "Java ist auch eine Insel" in der 4. Auflage, "Java Core v2" und die Javadocs...

1. mit welchem Befehl muss ich meine Anwendung beenden, damit alle von ihr geöffneten Dialoge mit geschlossen werden? Weder this.dispose() noch System.exit(0) schließen die noch offnenen Dialoge.

2. wie kann ich einen JDialog bzw. eine JFrame auf modal setzen? (habe z.B. eine JFrame, wo Benutzereingaben gemacht werden müssen, ich bekomm das Teil aber nicht modal gesetzt.. )

3. Ich kann this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); nicht verwenden, da ich beim Beenden eine Abfrage brauche. Habe es so versucht:

Code:
public class Gui extends JFrame {

  public Gui(String title) {
    super(title);
    ...
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    this.addWindowListener( new WindowAdapter () { 
         public void WindowClosing(WindowEvent event) {
         menueSpielBeendenClick();
         } 
       }
    );
    ....
    }
}

Die entsprechende Methode (menueSpielBeendenClick) wird aber nicht aufgerufen, woran liegts?
 

Illuvatar

Top Contributor
1. System.exit (0) schleißt hundertprozentig alles was offen ist

2. JDialog#setModal (true). JFrame geht net modal.

3. mch vllt DO_NOTHING_ON_CLOSE und mach dann in der Methode das dispose(). Aber eigentlich stimmt der Code.
 
R

Roar

Gast
1. System.exit() beendet die ganze VM somit werden auch alle dialoge geschlossen
2. JDialog#setModal() eine Frame kann man nicht modal machen
3. mach was setDefaultCloseOperation im code weg. methoden werden klein geschrieben. du musst die methode windowClosing nennen damit sie aufgerufen wird.
 

snoop83

Mitglied
toll, dann ist mein java-buch hier irreführend .. da werden eingaben über JFrame's erledigt und vorher wird davon gesprochen, dass diese eingabefenster nach wahl modal oder nicht modal sein können :(

kann ich meine bereits gestaltete frame einfach in einen dialog umwandeln? d.h. kann ich problemlos meine buttons, label, größe, position etc. auf einen jdialog übertragen?

System.exit(0) lässt während der Laufzeit vom Programm geöffnete JFrames leider offen
System.exit() geht nicht, Parameter erwartet


wie genau meinst du das mit "du musst die methode windowClosing nennen damit sie aufgerufen wird." so hier:

Code:
  public void windowClosing(WindowEvent event){
    JOptionPane.showMessageDialog(null,"exit"); // Platzhalter, nur Info
  }

  this.addWindowListener( new WindowAdapter () { 
      public void WindowClosing(WindowEvent event) {
      windowClosing(event);
      // menueSpielBeendenClick();
      } 
    }
  );

sorry, aber ich versteh immer weniger von diesem Listener-"Mist" .. :bahnhof:
 
R

Roar

Gast
zu system.exit() dann machste eindeutig was falsch :?

zum listener: deine implementierte methode muss windowClosing heissen!
 

snoop83

Mitglied
sie heißt doch nun
"windowClosing(...)"
oder ist das immernoch falsch?

und System.exit() erwartet bei mir immer einen Parameter:

Zeile:
System.exit();

Fehlermeldung:
The method exit(int) in the type System is not applicable for the arguments ()
 
R

Roar

Gast
snoop83 hat gesagt.:
und System.exit() erwartet bei mir immer einen Parameter:

Zeile:
System.exit();

Fehlermeldung:
The method exit(int) in the type System is not applicable for the arguments ()

uff ja dann gib ihm ein parameter ich bin nur zu faul ihn dahinzuschreiben!
 

snoop83

Mitglied
@ mic_checker:
ist mir schon klar, dass das nur ein platzhalter war, aber was ist denn nun hier dran noch falsch:

Code:
  public void windowClosing(WindowEvent event){ 
    JOptionPane.showMessageDialog(null,"exit"); // Platzhalter, nur Info 
  }

 this.addWindowListener( new WindowAdapter () { 
      public void WindowClosing(WindowEvent event) { 
      windowClosing(event); 
      // menueSpielBeendenClick(); 
      } 
    } 
  );



@ Roar :
wenn ich ihm einen Parameter gebe, z.B. 0, oder 1, oder 2 .. dann bleiben geöffnete JFrames offen :(



Desweiteren habe ich nun alle JFrames in JDialogs umgeschrieben, die JLabels, JButtons und JTextfields sind erhalten geblieben, soweit scheint auch alles zu gehen, aber:
Sobald ich meinen JDialog mit this.setModal(true); auf modal setze, reagieren die ActionListener der Buttons nicht mehr. Setze ich die Dialoge nicht auf modal, geht alles anstandslos :(


Code:
  public void nameAendernClick(){
  	if (!spielgestartet)
  	  {
  		final MyDialog namedialog = new MyDialog(
  				(int) this.getBounds().getX()+3,    // left
				(int) this.getBounds().getY()+40,   // top
				210, 160,         // width, height
  		"Spielername ändern" );  // title
  		namedialog.getContentPane().setLayout(null);
  		JButton ok = new JButton("OK");
  		JButton cancel = new JButton("Abbrechen");
  		JLabel name = new JLabel("Bitte Spielername eingeben:");
  		final JTextField eingabe = new JTextField("");
  		name.setBounds(     10, 10, 180, 24);
  		eingabe.setBounds(  10, 40, 180, 24);
  		ok.setBounds(       10, 70, 180, 24); // left, top, width, height
  		cancel.setBounds(   10, 100,180, 24);  	
  		namedialog.getContentPane().add(name);  	
  		namedialog.getContentPane().add(eingabe);  	
  		namedialog.getContentPane().add(ok);
  		namedialog.getContentPane().add(cancel);  	
  		namedialog.setResizable(false);
  		namedialog.setModal(true);
  		namedialog.setVisible(true);
  		cancel.addActionListener( new ActionListener(){
  			public void actionPerformed(ActionEvent event){
  				namedialog.dispose();
  				namedialog.setVisible(false);
  			}
  		});
  	
  		ok.addActionListener( new ActionListener(){
  			public void actionPerformed(ActionEvent event){
  				if ( (eingabe.getText().length() > 0) && (eingabe.getText().length() < 16) )
  				{
  					jLabelSpielerName.setText( eingabe.getText() );
  					namedialog.dispose();
  					namedialog.setVisible(false);
  					//daten.setSpielerName( eingabe.getText() ); 
  				}
  				else
  				{ JOptionPane.showMessageDialog(null,
                                       "Der Name muss mindestens 1 Zeichen und maximal 15 Zeichen enthalten!");
  				}
  			}
  		});
  	  }
  	else
  	 { JOptionPane.showMessageDialog(null,
             "Der Name kann während eines Spiels nicht geändert werden!");
  	 }
  }



    jMenuItemNameAendern.addActionListener(new ActionListener(){
    	public void actionPerformed(ActionEvent event){
    		nameAendernClick();
    	}
    }


wobei


Code:
class MyDialog extends JDialog {
	public MyDialog(int left, int top, int width, int height, String title){
		this.setBounds(left, top, width, height);
		this.setTitle(title);
	}
}
 

snoop83

Mitglied
Code:
public class Gui extends JFrame {

  public Gui(String title) {
    super(title);
    ....
    //this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
    //this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    this.addWindowListener( new WindowAdapter () { 
        public void WindowClosing(WindowEvent event) {
        WindowClosing(event);
        } 
      }
  }


  public void WindowClosing(WindowEvent event){
  	System.out.println("exit"); // < funzt nicht
  	JOptionPane.showMessageDialog(null,"exit"); // < funzt auch nicht
  	// menueSpielBeendenClick(); // genauso wenig :(
  }

ich lass dir den code auch gern per Mail zukommen.. aber: es will einfach nicht, keine chance :(
 

mic_checker

Top Contributor
Arg, schau dir bitte mal das an. Warum rufst du innerhalb von windowClosing ne gleichnamige Methode auf und machst es nicht direkt in der anonymen Klasse?
 

snoop83

Mitglied
ooh.. verdammt, ja, das wüsst ich auch gern.

Aber, ich weiß warum: Weil ich schon 5 Stunden vor dem Quelltext sitze und irgendwann sieht man sowas einfach nicht mehr ..

Code:
    this.addWindowListener( new WindowAdapter () { 
        public void windowClosing(WindowEvent event) {
          	System.out.println("exit");
          	JOptionPane.showMessageDialog(null,"exit");
          	menueSpielBeendenClick();
        } 
      }
    );

so gehts natürlich auf Anhieb .. Danke für die Hilfe!


gut, nun muss ich nur noch rausfinden, warum meine JDialogs nur funktionieren, wenn sie nicht modal sind ?!?! :(
edit:
problem gelöst,
this.setModal(true); muss einfach nur als letztes aufgerufen werden *arg* ... ist mir jetzt auch klar, warum...



edit:
kann ich denn direkt beim windowClosing selbiges noch verhindern?
z.b. per ConfirmDialog?
 

L-ectron-X

Gesperrter Benutzer
So in etwa:

Code:
private void exit() {
  int answer = -1;
  Toolkit.getDefaultToolkit().beep();

  answer = JOptionPane.showConfirmDialog(null, "Möchten Sie die Anwendung wirklich beenden?",  "Programm beenden", JOptionPane.YES_NO_OPTION);

  switch(answer) {
    case JOptionPane.YES_OPTION:
      System.exit(0);
  }
}
 
R

Roar

Gast
@lex: und wenn der benutzer nein auswählt?
@snoop: weiß nich, musst mal probieren ob das geht wenn du das ewevt abfängst (onsume())
 

thE_29

Top Contributor
DU MUSST sagen setDefaultClosingOperation(DO_NOTHING_ON_CLOSE);


Dh, einfach nur, wenn man auf das X drückt, das sich der frame net invisible machen soll!!


Dh, ABER NICHT, das die windowClosing, etc Methoden nicht aufgerufen werden (die werden trotzdem aufgerufen)

Nur wenn man sagt, do_nothing... muss man halt selber dispose oder setVisible(false) sagen

Das is der Unterschied!
 

snoop83

Mitglied
es geht nicht ... geöffnete JFrames bleiben weiterhin offen.

Quelltext-Auszug:

Code:
import java.awt.Toolkit;
import javax.swing.JOptionPane;

public class Anwendung {
  public static Spieldaten spieldaten;
  public static Netzwerk netzwerk;
  public static Gui fenster;
	
	
  public static void main(String[] args){
  	spieldaten = new Spieldaten();
  	fenster = new Gui("Muehle");
  }
  
  public static void exitprog() { 
	  int answer = -1; 
	  Toolkit.getDefaultToolkit().beep(); 

	  JOptionPane.showConfirmDialog(null,
             "Möchten Sie die Anwendung wirklich beenden?",
             "Programm beenden", JOptionPane.YES_NO_OPTION); 

	  switch(answer) { 
	    case JOptionPane.YES_OPTION: 
	      System.exit(0); 
	  } 
	}
  
}


------------------------------------------
------------------------------------------


public class Gui extends JFrame {

public Gui(String title) {
  super(title);
  this.setBounds(150,50,600,600);  
  contentPane = (JPanel) this.getContentPane();
  contentPane.setLayout(null);
  itemsAnordnen();
  this.setJMenuBar(jMenuBar);
  this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
  this.addWindowListener( new ListenerSpielBeenden()); //hier
  // meckert er rum:
  // Severity	Description	Resource	In Folder	Location	Creation Time
  // The method addWindowListener(WindowListener) in the type Window is not
  // applicable for the arguments (ListenerSpielBeenden)	Gui.java
  // Anwendung	line 155	12. Mai 2005 18:36:43
  this.setResizable(false);
  this.setVisible(true);
}



------------------------------------------
------------------------------------------


public class ListenerProgrammBeenden implements ActionListener {

	public ListenerProgrammBeenden() {
	}

	public void actionPerformed(ActionEvent e) {
		//Anwendung.fenster.menueProgrammBeendenClick();
		Anwendung.exitprog();
  		}
}
 

L-ectron-X

Gesperrter Benutzer
Roar hat gesagt.:
@lex: und wenn der benutzer nein auswählt?
Es gibt ja quasi nur eine Aktion des Benutzers, auf welches das Programm reagieren soll. Nämlich dann, wenn er "Ja" klickt und damit das Programm verlassen möchte.
Wenn er "Nein" klickt, wird einfach nur die Methode verlassen, ohne etwas zu tun.
 
R

Roar

Gast
L-ectron-X hat gesagt.:
Roar hat gesagt.:
@lex: und wenn der benutzer nein auswählt?
Es gibt ja quasi nur eine Aktion des Benutzers, auf welches das Programm reagieren soll. Nämlich dann, wenn er "Ja" klickt und damit das Programm verlassen möchte.
Wenn er "Nein" klickt, wird einfach nur die Methode verlassen, ohne etwas zu tun.
ja aber wenn der code so in der windowclosing methpde steht wird das programm (oder min das fenster) so doer so geschlossen :?
 

L-ectron-X

Gesperrter Benutzer
Roar hat gesagt.:
ja aber wenn der code so in der windowclosing methpde steht wird das programm (oder min das fenster) so doer so geschlossen
Wenn ich die windowClosing()-Methode leer lasse, passiert gar nichts.
Beispiel-Code?
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyTestArea extends JFrame {
   public MyTestArea() {
      super("MyTestArea");

      setSize(600, 450);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
      
      addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            exit();
         }
      });
   }
      
   private void exit() {
      int answer = -1;
      Toolkit.getDefaultToolkit().beep();

      answer = JOptionPane.showConfirmDialog(null,
               "Möchten Sie die Anwendung wirklich beenden?", 
               "Programm beenden", JOptionPane.YES_NO_OPTION);

      switch(answer) {
         case JOptionPane.YES_OPTION:
         System.exit(0);
      }
   }
   
   public static void main(String[] args) {
      new MyTestArea().setVisible(true);
   }
}
Es passiert nur das, was ich dort hinein programmiere. So könnte ich genauso gut zwei neue Fenster öffnen, wenn ich eines schließen möchte. :wink:
 

snoop83

Mitglied
toll, so gehts ...

thx @ L-ectron-X!

wollt eh als nächstes nach nem beispiel-code fragen ..

komischerweise werden damit auch noch offenen und während der laufzeit erstellte JFrames geschlossen, was vorher nicht der fall war..
 

L-ectron-X

Gesperrter Benutzer
Das liegt am
Code:
System.exit(0);
Diese Anweisung beendet die VM und damit alle noch laufenden Objekte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Listener fuer Window Close AWT, Swing, JavaFX & SWT 2
J Window Listener funzt nicht richtig AWT, Swing, JavaFX & SWT 5
R Die (J)Frame window listener AWT, Swing, JavaFX & SWT 7
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
S Window Builder AWT, Swing, JavaFX & SWT 20
I Modal Window AWT, Swing, JavaFX & SWT 26
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
C JavaFX Window-Position AWT, Swing, JavaFX & SWT 3
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
Z Window Builder - Labels mit setText befüllen AWT, Swing, JavaFX & SWT 11
B JavaFX Werte aus eingefügtem Window lesen AWT, Swing, JavaFX & SWT 0
EisKaffee Swing Window Builder installieren AWT, Swing, JavaFX & SWT 1
D SWT Window passt Größe nicht an AWT, Swing, JavaFX & SWT 4
H Drag component out of window AWT, Swing, JavaFX & SWT 1
B Swing "Window Manager" - Gedankenprobleme AWT, Swing, JavaFX & SWT 9
G Window aus anderer Klasse aufrufen AWT, Swing, JavaFX & SWT 4
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2
H Swing Google Window-Builder AWT, Swing, JavaFX & SWT 4
S Flackerndes Window beim DnD AWT, Swing, JavaFX & SWT 37
D SWT CheckBox auslesen (Window Builder Pro) AWT, Swing, JavaFX & SWT 2
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
B Swing Window nur bedingt im Vordergrund AWT, Swing, JavaFX & SWT 5
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
R Swing Sequenz aus farbigen Quadraten in Window anzeigen AWT, Swing, JavaFX & SWT 11
J Fehlermeldung adding a window to a container AWT, Swing, JavaFX & SWT 9
L AWT Window, Dialog und verschiedene Betriebssysteme AWT, Swing, JavaFX & SWT 2
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
T SWT Window Builder Pro File Dialog anzeigen AWT, Swing, JavaFX & SWT 10
J Swing kann window nicht übergeben AWT, Swing, JavaFX & SWT 14
L Fenster inaktiv setzen / deaktivieren (unable to close window) AWT, Swing, JavaFX & SWT 16
data89 Code-completion-window erzeugen - wie? AWT, Swing, JavaFX & SWT 2
Spin Window Event Beispiel AWT, Swing, JavaFX & SWT 6
H Eclipse View / Window Layout AWT, Swing, JavaFX & SWT 3
T Exception: Adding a window to a container AWT, Swing, JavaFX & SWT 14
M "Window"-Bibilotheck AWT, Swing, JavaFX & SWT 4
I JFrame-Anmerkung "Java Applet Window" entfernen AWT, Swing, JavaFX & SWT 4
T Synchrones Window-verschieben AWT, Swing, JavaFX & SWT 4
K Prompt window in Java? AWT, Swing, JavaFX & SWT 3
S Window über beide Bildschirme maximieren AWT, Swing, JavaFX & SWT 8
F Window#setAlwaysOnTop und Java 1.4.x AWT, Swing, JavaFX & SWT 5
M createImage in Window-Unterklasse AWT, Swing, JavaFX & SWT 4
M Window unterteilen AWT, Swing, JavaFX & SWT 9
R JFrame -- Variable Positionierung durch Window Manager? AWT, Swing, JavaFX & SWT 2
G Window in Taskleiste AWT, Swing, JavaFX & SWT 13
G Window wird angezeigt, nur der Inhalt nicht AWT, Swing, JavaFX & SWT 5
U Reaktion auf closing window AWT, Swing, JavaFX & SWT 7
M not serializable: sun.awt.window.WImage AWT, Swing, JavaFX & SWT 8
N frage ueber D&D von window wie in einige IDE AWT, Swing, JavaFX & SWT 7
P Transparentes Window/JFrame (mit SkinLF?) AWT, Swing, JavaFX & SWT 10
R "Statusbar" - JFrame mit 'Java Applet Window' AWT, Swing, JavaFX & SWT 18
S Performance-Problem: JTextArea als Logging-Window AWT, Swing, JavaFX & SWT 8
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
llabusch Event Handling Listener spielt verrückt AWT, Swing, JavaFX & SWT 8
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen


Oben