Button über Pfeiltasten bewegen

Diskutiere Button über Pfeiltasten bewegen im Java Basics - Anfänger-Themen Bereich.
J

Jiscona

Hallo,

ich wollte in meiner GUI ein paar Buttons bewegen und wollte das ursprünlich per Drag and Drop machen, aber ich glaube, es per Pfeiltasten zu machen ist übersichtlicher. Ist das möglich? Es ist nötig:
1. Der ausgewählte Button muss festgelegt werden.
2. Er muss sich nach oben und unten bewegen können.

Ich habe noch kein Beispielprogramm, da ich nicht weiß was darin enthalten sein sollte.

VG und Danke im Voraus.
 
MoxxiManagarm

MoxxiManagarm

Wir wissen ja nicht mal mit was du die GUI programmieren willst. Swing? FX? ... ?
 
MoxxiManagarm

MoxxiManagarm

Ok, von AWT alleine wird ich dir schonmal abraten. Swing ist ein superset von AWT. Gehen wir mal davon aus. Ich finde übrigens Drag&Drop an der Stelle einfacher. Hier eine Demo:

Java:
public class DragDemo extends JFrame {

    public DragDemo() {
        setTitle("Demo für Jiscona");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(500, 500));
        panel.setLayout(null);

        panel.add(createDragableButton("1", 100, 100));
        panel.add(createDragableButton("2", 250, 300));

        add(panel);

        pack();
    }

    private JButton createDragableButton(String text, int x, int y) {
        JButton button = new JButton(text);
        button.setBounds(x, y, button.getPreferredSize().width, button.getPreferredSize().height);

        button.addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                Rectangle bounds = button.getBounds();
                bounds.x += e.getX();
                bounds.y +=  e.getY();
                button.setBounds(bounds);
            }
        });

        return button;
    }

    public static void main(String[] args) {
     new DragDemo().setVisible(true);
    }
}
 
J

Jiscona

Das ist Perfekt!
Mir wurde immer gesagt, Drag and Drop wäre zu schwer, aber so funktioniert es super.
Aber zwei Fragen hätte ich noch: ist es möglich, diese Buttons auch als Feld zu nutzen bzw. wo muss ich [zahl] einfügen, um dies zu ermöglichen? Oder ist dies die Zahl die bei panel.add(b_anweisung("1", 100, 100))] steht?
und zweitens: Kann ich die Stelle, anderder Button "abgelegt" wurde als Zahl speichern (also die Koordinaten)?[/ICODE]
 
Zuletzt bearbeitet:
MoxxiManagarm

MoxxiManagarm

st es möglich, diese Buttons auch als Feld zu nutzen
Ich bin mir nicht sicher was du mit der Frage meinst

Oder ist dies die Zahl die bei panel.add(b_anweisung("1", 100, 100))] steht?
Die 1 in dem Aufruf ist nur das, was auf dem Button angezeigt wird. Das könnte jeder Wert sein, ich habe einfach nur 1 und 2 verwendet.

Kann ich die Stelle, anderder Button "abgelegt" wurde als Zahl speichern (also die Koordinaten)?
Ja könntest du.

Java:
bounds.x += e.getX();
bounds.y += e.getY();
Der resultierenden Werte von bounds.x und bounds.y sind die Koordinaten

Mir wurde immer gesagt, Drag and Drop wäre zu schwer, aber so funktioniert es super.
Das kommt darauf an. Ein Drag und Drop von Komponenten selbst ist nicht schwer. Drag und Drop ist aber recht vielseitig. Es gibt das Scenario von extern dragged Inhalten, wie Texte oder Dateien. Das kann umfangreicher werden, wenn du einen solchen Usecase umsetzen wollen würdest.
 
MoxxiManagarm

MoxxiManagarm

Ich meine, dass ich mehrer Buttons der gleichen Art habe, und nicht jeden Button einzeln ertsellen muss
Naja genau genommen musst du schon noch jeden Button "einzeln" erstellen, aber du kannst das mit einer Schleife erledigen.

Beispiel:
Java:
// anstatt der 2 Zeilen panel.add aus meiner Demo
Random r = new Random();
for (int i = 1; i <= 10; i++) {
    panel.add(createDragableButton("" + i, r.nextInt(450), r.nextInt(450)));
}
 
J

Jiscona

Alles klar, und wie kann ich dann den Text eines bestimmten Buttons ändern (also wo muss ich dann die Zahl einfügen)?
 
Thema: 

Button über Pfeiltasten bewegen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben