Hallo zusammen,
ich habe ein kleines Programm geschrieben, welches ein Fenster erzeugt. Dieses Fenster kann man durch Klicken auf vier Buttons verschieben.
Könnt Ihr bitte den Quelltext mal durschauen, ob da ihr noch was zu Verbessern wisst?
Vielen Dank!
	
	
	
	
	
		
	
und:
	
	
	
	
	
		
	
Viele Grüße!
			
			ich habe ein kleines Programm geschrieben, welches ein Fenster erzeugt. Dieses Fenster kann man durch Klicken auf vier Buttons verschieben.
Könnt Ihr bitte den Quelltext mal durschauen, ob da ihr noch was zu Verbessern wisst?
Vielen Dank!
		Java:
	
	import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.BorderLayout;
import javax.swing.JOptionPane;
public class SchaltflaecheVerschiebenGUI extends JFrame {
	
	//Die Schaltflächen für die Buttons
	private JButton rauf, runter, links, rechts;
	
	//Die Variablen für die Positionierung auf dem Desktop
	private int xachse = 400, yachse = 200;
	
	//Die Variablen, welche die aktuelle Desktopgröße abspeichern
	private int desktopwidth, desktopheight;
	
	//Die Variablen, welche die aktuelle maximal zulässige Verschiebung abspeichern
	private int maxverschiebungunten, maxverschiebungrechts;
	
	//Der Wert für die aktuellen Abmessungen des Fenster
	private int widthFenster = 300, heightFenster = 300;
	
	
	class MeinKompakterListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			
			if (e.getActionCommand ().equals ("RAUF")) {
				yachse -= 10;
			}
			
			if (e.getActionCommand ().equals ("RUNTER")) {
				yachse += 10;
			}
			
			if (e. getActionCommand (). equals ("LINKS")) {
				xachse -= 10;
			}
			
			if (e.getActionCommand ().equals ("RECHTS")) {
				xachse += 10;
				}
		
	    //Die Methode zur Auswertung der eingegeben X-Achsen und Y-Achsen Werte
		werteAuswerten();
			}			
		}
			
		
		public SchaltflaecheVerschiebenGUI (String titel) {
			//Den Konstruktor der Superklasse aufrufen
			super (titel);
			
			//Die vier Schaltflächen erstellen
			rauf = new JButton ("RAUF");
			runter = new JButton ("RUNTER");
			links = new JButton ("LINKS");
			rechts = new JButton ("RECHTS");
			
			//Das Layout festlegen
			this.setLayout(new BorderLayout(10,10));
			
			add (BorderLayout.NORTH, rauf);
			add (BorderLayout.EAST, rechts);
			add (BorderLayout.SOUTH, runter);
			add (BorderLayout.WEST, links);
		  
		 
			//die Größe des Fensters festlegen
			this.setSize (widthFenster, heightFenster);
		  
		    //die aktuelle Größe des Desktops ermitteln
			//für die Breite:
			
			desktopwidth = FenstergroesseBerechenen.getDesktopwidth ();
			
			//die aktuelle Größe des Desktops ermitteln 
			//für die Höhe:
			
			desktopheight = FenstergroesseBerechenen.getDesktopheight();
			
			//die maximale Verschieben nach unten Berechnen
			
			maxverschiebungunten = desktopheight - heightFenster;
			System.out.println (maxverschiebungunten);
		  
			//die maximale Verschiebung nach rechts Berechnen
			
			maxverschiebungrechts = desktopwidth - widthFenster;
			
		 
			//eine neue Instanz der Listener Klasse erstellen
			MeinKompakterListener listener = new MeinKompakterListener ();
		  
			//die Schaltflächen mit dem Listener verbinden
			rauf.addActionListener (listener);
			runter.addActionListener (listener);
			links.addActionListener (listener);
			rechts.addActionListener(listener);
		  
		
			//die Fenstergröße fixieren
			this.setResizable (false);
		  
			//das Fenster auf dem Desktop plazieren
			this.setLocation(xachse, yachse);
		  
			//die Standardaktion beim Schließen des Fensters festlegen
			setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		  
			//das Fenster anzeigen
			setVisible (true); 		
		}
		
	
		//die Methode, um die geänderten Positions-Koordinaten auszuwerten
		public void werteAuswerten () {
			
			//Prüfen, ob der neue Wert korrekt ist, d. h. auf dem Desktop sichtbar ist
			if (xachse >= 0 && xachse <= maxverschiebungrechts && yachse >= 0 && yachse <= maxverschiebungunten){
				
				setLocation (xachse, yachse);
			}
			
			//falls die Koordinaten ungültig sind, dann erscheint eine Meldung auf dem Desktop
			//und es werden die minimal bzw. maximal zulässigen Werte hinterlegt.
		
			else {
				JOptionPane.showMessageDialog (null, "Ihre Eingabe war ungültig");	
				
				if (xachse < 0)
					xachse = 0;
				
				else
					if (xachse > maxverschiebungrechts)
						xachse = maxverschiebungrechts;
				
				if (yachse < 0)
					yachse = 0;
				
				else 
					if (yachse > maxverschiebungunten)
						yachse = maxverschiebungunten;
				}			
		}
}und:
		Java:
	
	import java.awt.Dimension;
import java.awt.Toolkit;
public class FenstergroesseBerechenen {
	
	
	
	public static int getDesktopwidth () {
		//Variable zur Zwischenspeicherung der Desktopbreite
		int bwidth;
		
		
		Dimension bGroesse =	Toolkit.getDefaultToolkit().getScreenSize();
		
		bwidth = bGroesse.getSize().width;
		return bwidth;	
	}
	
	public static int getDesktopheight () {
		//Variable zur Zwischenspeicherung der Desktophöhe
		int bheight;
		
		Dimension bGroesse =	Toolkit.getDefaultToolkit().getScreenSize();
		
		bheight = bGroesse.getSize().height;
		return bheight;
	}
}Viele Grüße!
 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		