Fensterposition über Buttons ändern

katerchen1982

Grünschnabel
Hallo!!!
Folgenden Aufgabenstellung habe ich bekommen: Ein Fenster soll mit Buttons verschoben werden. Es gibt einen Button für 10px nach oben, einen für 10px nach unten und entsprechende Button für nach links und rechts.
Folgendes habe ich jetzt programmiert:
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JButton;


public class WindowPosition extends JFrame{
    
    private static final long serialVersionUID = 1L;
    JButton left, right, up, down, ende;
    
  
    public class MyListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("right")){
                if(getX() < Toolkit.getDefaultToolkit().getScreenSize().getWidth()-getSize().getWidth())
                    setLocation(getX() + 10, getY());
                    }

            if (e.getActionCommand().equals("left")){
                if(getX() > 0)
                    setLocation(getX() - 10, getY());
                    }

            if (e.getActionCommand().equals("up")){
                if(getY() > 0)
                    setLocation(getX(), getY() - 10);
                    }

            if (e.getActionCommand().equals("down")){
                if(getY() < Toolkit.getDefaultToolkit().getScreenSize().getHeight()-getSize().getHeight())
                    setLocation(getX(), getY() + 10);
                    }
            if(e.getActionCommand().equals("ende"))
                System.exit(0);
                
        }
        
    }
    public WindowPosition(String title) {
      
      super(title);
      
      up = new JButton("up");
      down = new JButton("down");
      left = new JButton("left");
      right = new JButton("right");
      ende = new JButton("ende");
      setLayout(new BorderLayout(25,25));
      add(BorderLayout.NORTH,up);
      add(BorderLayout.SOUTH,down);
      add(BorderLayout.EAST,right);
      add(BorderLayout.WEST ,left);
      add(BorderLayout.CENTER, ende);
      up.addActionListener(new MyListener());
      down.addActionListener(new MyListener());
      right.addActionListener(new MyListener());
      left.addActionListener(new MyListener());
      ende.addActionListener(new MyListener());
      setSize(300,300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      Dimension screenSize= Toolkit.getDefaultToolkit().getScreenSize();
      setLocation((screenSize.width - getSize().width) / 2, (screenSize.height - getSize().height) / 2);
      
      setVisible(true);
      
   }
    
}
Jetzt hat man mir als Feedback mitgeteilt der Code zu 3 Problemen führen kann.
Das einzige Problem, das mir im Moment einfällt ist, dass das Fenster irgendwann im nirgendwo (also außerhalb des Bildschirmbereichs) verschwindet.
Habt ihr noch Ideen zu welchen Problemen es noch kommen kann bzw habt ihr evtl. auch Tipps für mich dies etwas eleganter zu coden?

Ich danke euch schon jetzt für eure Hilfe.

LG :)
 

Neue Beiträge

Zurück