Guten Abend,
ich habe eine Aufgabe erhalten und habe versucht Alles nach Vorgaben zu programmieren, aber die Verschiebung nach oben und unten funktioniert nicht.
Vielen Dank für eure Hilfe im Voraus.
Aufgabe)
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 bzw. nach rechts.
Beachten Sie bei der Umsetzung bitte folgenden Vorgaben:
- Erstellen Sie für den Listener eine innere Klasse in der Klasse mit dem Fenster der Anwendung. Der Listener soll die Ereignisse alle vier Schaltflächen verarbeiten können.
- Setzen Sie das Fenster der Anwendung fest auf die Größe 300x300 und positionieren Sie es zunächst 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.
Mein Code:
ich habe eine Aufgabe erhalten und habe versucht Alles nach Vorgaben zu programmieren, aber die Verschiebung nach oben und unten funktioniert nicht.
Vielen Dank für eure Hilfe im Voraus.
Aufgabe)
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 bzw. nach rechts.
Beachten Sie bei der Umsetzung bitte folgenden Vorgaben:
- Erstellen Sie für den Listener eine innere Klasse in der Klasse mit dem Fenster der Anwendung. Der Listener soll die Ereignisse alle vier Schaltflächen verarbeiten können.
- Setzen Sie das Fenster der Anwendung fest auf die Größe 300x300 und positionieren Sie es zunächst 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.
Mein Code:
Java:
package gui2;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.BorderFactory;
public class Schaltflaechen extends JFrame {
//die ID wurde automatisch mit Eclipse ergänzt
private static final long serialVersionUID = 9101793356610287755L;
private JButton schaltflaeche1, schaltflaeche2, schaltflaeche3, schaltflaeche4, schaltflaeche5;
//für die aktuelle Schriftgröße
private int schriftGroesse;
//Instanzvariablen für horizontale & vertikale Verschiebung
private int x,y;
//die innere Klasse für den ActionListener
class SchaltflaechenListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//würde auf NORTH geklickt
if (e.getActionCommand().equals("NORTH"))
// 10 Pixeln nach NORTH
setLocation(x, y+10);
//würde auf EAST geklickt
if (e.getActionCommand().equals("EAST"))
// 10 Pixeln nach Unten
setLocation(x+10, y);
//würde auf CENTER geklickt
if (e.getActionCommand().equals("CENTER"))
// 10 Pixeln nach CENTER!
setLocation(x-0,y-0);
//würde auf SOUTH geklickt
if (e.getActionCommand().equals("SOUTH"))
// 10 Pixeln nach SOUTH!
setLocation(x, y-10);
//würde auf WEST geklickt
if (e.getActionCommand().equals("WEST"))
// 10 Pixeln nach WEST!
setLocation(x-10, y);
schaltflaeche1.setFont(new Font("Arial", Font.PLAIN, schriftGroesse));
schaltflaeche2.setFont(new Font("Arial", Font.PLAIN, schriftGroesse));
schaltflaeche3.setFont(new Font("Arial", Font.PLAIN, schriftGroesse));
schaltflaeche4.setFont(new Font("Arial", Font.PLAIN, schriftGroesse));
schaltflaeche5.setFont(new Font("Arial", Font.PLAIN, schriftGroesse));
}
}
//der Konstruktor
public Schaltflaechen(String titel) {
super(titel);
// 5 Schaltflächen erzeugen.
schaltflaeche1 = new JButton("NORTH");
schaltflaeche2 = new JButton("EAST");
schaltflaeche3 = new JButton("CENTER");
schaltflaeche4 = new JButton("SOUTH");
schaltflaeche5 = new JButton("WEST");
// Erweiterung: Bildschirmtipps
schaltflaeche1.setToolTipText("NORTH");
schaltflaeche2.setToolTipText("SOUTH");
schaltflaeche3.setToolTipText("EAST");
schaltflaeche4.setToolTipText("WEST");
schaltflaeche5.setToolTipText("CENTER");
//die Größe für die Schrift setzen
schriftGroesse = 30;
// Schriftart und Schriftgröße für die Schaltflächen setzen
schaltflaeche1.setFont(new Font("Arial",Font.PLAIN, schriftGroesse));
schaltflaeche2.setFont(new Font("Arial",Font.PLAIN, schriftGroesse));
schaltflaeche3.setFont(new Font("Arial",Font.PLAIN, schriftGroesse));
schaltflaeche4.setFont(new Font("Arial",Font.PLAIN, schriftGroesse));
schaltflaeche5.setFont(new Font("Arial",Font.PLAIN, schriftGroesse));
//ein neues Border-Layout
setLayout(new BorderLayout(25,25));
add(BorderLayout.NORTH, schaltflaeche1);
add(BorderLayout.EAST, schaltflaeche2);
add(BorderLayout.CENTER, schaltflaeche3);
add(BorderLayout.SOUTH, schaltflaeche4);
add(BorderLayout.WEST, schaltflaeche5);
//den Listener verbinden
schaltflaeche1.addActionListener(new SchaltflaechenListener());
schaltflaeche2.addActionListener(new SchaltflaechenListener());
schaltflaeche3.addActionListener(new SchaltflaechenListener());
schaltflaeche4.addActionListener(new SchaltflaechenListener());
schaltflaeche5.addActionListener(new SchaltflaechenListener());
//die Fenstergröße setzen
setSize(300, 300);
//die Standardaktion beim Schließen festlegen
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension bGroesse = Toolkit.getDefaultToolkit().getScreenSize();
//das Fenster positionieren
setLocation((bGroesse.width - getSize().width) / 2, (bGroesse.height - getSize().height) / 2);
//oder einfach so
// setLocationByPlatform(true); Aber laut Aufgabestellung falsch?
//das Fenster anzeigen
setVisible(true);
}
public static void main(String[] args) {
new Schaltflaechen("Schaltflächen in verschiedenen Richtungen");
}
}