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!