Guten Abend,
ich verzweifle gerade an meiner Aufgabe.
Folgende Aufgabenstellung:
Erstellen Sie eine Anwendung, in der Sie die Position des Fensters der Anwendung über vier Schaltflächen verändern können. Eine Schaltfläche soll das Fenster um 10 Pixel nach oben verschieben, eine um 10 Pixel nach unten und die beiden anderen um je 10 Pixel nach links beziehungsweise rechts.
Beachten Sie bei der Umsetzung bitte die folgenden Vorgaben:
• Erstellen Sie für den Listener eine innere Klasse in der Klasse mit dem Fenster der Anwendung. Der Listener soll die Ereignisse aller vier Schaltflächen verarbeiten können.
• Setzen Sie das Fenster der Anwendung fest auf die Größe 300 × 300 und positionieren Sie es zunächst an einer beliebigen Stelle auf dem Desktop.
• Ordnen Sie die Schaltflächen in einem BorderLayout mit einem Abstand von 25 Pixeln an.
• Stellen Sie sicher, dass das Fenster nicht aus dem Desktop herausgeschoben werden kann. Ermitteln Sie dazu die aktuelle Größe des Desktops und berechnen Sie dann die maximal möglichen Koordinaten für die Verschiebung nach rechts und nach unten. Für die Verschiebung nach links beziehungsweise oben können Sie den Wert 0 als Grenze verwenden.
Ein kleiner Tipp:
Wie Sie die aktuelle Größe des Desktops ermitteln können, finden Sie in diesem Studienheft beim Zentrieren eines Fensters auf dem Desktop. Sehen Sie dort gegebenenfalls noch einmal nach.
Nun hab ich mir das Grundgerüst aufgebaut, Button erstellt, BorderLayout erstellt, etc. Nun scheitert es aber an der Verschiebung. Mein Gedanke dazu war, über if Bedingungen den gedrückten Button finden, durch getActionCommand(). Beim jeweiligen Button dann die derzeitige Positions des Fensters ermitteln und dann über setLocation um 10px verschieben. Nun ist aber mein Problem, dass ich zum derzeitigen Lernstand nichts in meinem Heft zur Ermittlung der aktuellen Position gefunden habe. Logisch empfand ich hier die Methode getLocation. Jedoch zeigt er mir hier irgendwas mit Point an, was mir aktuell noch gar nichts sagt und ich darüber nichts gelernt habe, somit kann dies nicht der gewünschte Weg sein. Ich habe auch hier im Forum recherchiert und etwas gefunden, jedoch wird hier auch getLocation mit Point empfohlen.
Ich komm nicht weiter - wer hat eine andere Idee??
Hier noch mein unvollständiger Code zur besseren Verständlichkeit:
ich verzweifle gerade an meiner Aufgabe.
Folgende Aufgabenstellung:
Erstellen Sie eine Anwendung, in der Sie die Position des Fensters der Anwendung über vier Schaltflächen verändern können. Eine Schaltfläche soll das Fenster um 10 Pixel nach oben verschieben, eine um 10 Pixel nach unten und die beiden anderen um je 10 Pixel nach links beziehungsweise rechts.
Beachten Sie bei der Umsetzung bitte die folgenden Vorgaben:
• Erstellen Sie für den Listener eine innere Klasse in der Klasse mit dem Fenster der Anwendung. Der Listener soll die Ereignisse aller vier Schaltflächen verarbeiten können.
• Setzen Sie das Fenster der Anwendung fest auf die Größe 300 × 300 und positionieren Sie es zunächst an einer beliebigen Stelle auf dem Desktop.
• Ordnen Sie die Schaltflächen in einem BorderLayout mit einem Abstand von 25 Pixeln an.
• Stellen Sie sicher, dass das Fenster nicht aus dem Desktop herausgeschoben werden kann. Ermitteln Sie dazu die aktuelle Größe des Desktops und berechnen Sie dann die maximal möglichen Koordinaten für die Verschiebung nach rechts und nach unten. Für die Verschiebung nach links beziehungsweise oben können Sie den Wert 0 als Grenze verwenden.
Ein kleiner Tipp:
Wie Sie die aktuelle Größe des Desktops ermitteln können, finden Sie in diesem Studienheft beim Zentrieren eines Fensters auf dem Desktop. Sehen Sie dort gegebenenfalls noch einmal nach.
Nun hab ich mir das Grundgerüst aufgebaut, Button erstellt, BorderLayout erstellt, etc. Nun scheitert es aber an der Verschiebung. Mein Gedanke dazu war, über if Bedingungen den gedrückten Button finden, durch getActionCommand(). Beim jeweiligen Button dann die derzeitige Positions des Fensters ermitteln und dann über setLocation um 10px verschieben. Nun ist aber mein Problem, dass ich zum derzeitigen Lernstand nichts in meinem Heft zur Ermittlung der aktuellen Position gefunden habe. Logisch empfand ich hier die Methode getLocation. Jedoch zeigt er mir hier irgendwas mit Point an, was mir aktuell noch gar nichts sagt und ich darüber nichts gelernt habe, somit kann dies nicht der gewünschte Weg sein. Ich habe auch hier im Forum recherchiert und etwas gefunden, jedoch wird hier auch getLocation mit Point empfohlen.
Ich komm nicht weiter - wer hat eine andere Idee??
Hier noch mein unvollständiger Code zur besseren Verständlichkeit:
Java:
package einsendeaufgabe;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Positionswechsel extends JFrame {
private JButton schaltflächeOben;
private JButton schaltflächeUnten;
private JButton schaltflächeRechts;
private JButton schaltflächeLinks;
class Listener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//ab hier scheitert es - wie erfolgt die Verschiebung???
if (e.getActionCommand().equals("Nach oben")){
}
}
}
public Positionswechsel (String titel) {
super (titel);
JButton schaltflächeOben = new JButton ("Nach oben");
JButton schaltflächeUnten = new JButton ("Nach unten");
JButton schaltflächeRechts = new JButton ("Nach rechts");
JButton schaltflächeLinks = new JButton ("Nach Links");
setLayout(new BorderLayout());
add(BorderLayout.NORTH,schaltflächeOben);
add(BorderLayout.SOUTH, schaltflächeUnten);
add(BorderLayout.EAST, schaltflächeRechts);
add(BorderLayout.WEST, schaltflächeLinks);
setSize(300,300);
setLocationRelativeTo(null);
setVisible(true);
}
}