Komponenten frei per Drag&Drop in (z.B.) Null-Layout bew

Status
Nicht offen für weitere Antworten.

robsonLE

Neues Mitglied
Ich möchte gern Swing-komponeneten wie z.B. JLabel oder JButton in einem freien Layout (nullLayout) bewegen können.
Mir fehlt aber leider ein Anstoss oder ein Beispiel dies zu realisieren (insofern das möglich ist). 🙁
Die Standard-DnD features wie Color oder Text sind ja kein Problem, aber Positionen verändern???
Wäre für einen Tip oder ein interessanten Literaturhinweis dankbar.
 
Das habe ich zZ auch gemacht 😉

Jedenfalls, muss das irgendwie so aussehen!

Code:
public class DragTextField
      extends JTextField implements DragGestureListener, DragSourceListener
  {
    private DragSource dragSource;
/**************************************************************************
     *
     * 
     *************************************************************************/
    public DragTextField()
    {
      dragSource = new DragSource();
      dragSource.createDefaultDragGestureRecognizer(this,
                                                    DnDConstants.ACTION_COPY_OR_MOVE, this);
    }
/**************************************************************************
     *
     * @param dge DragGestureEvent
     *************************************************************************/
    public void dragGestureRecognized(DragGestureEvent dge)
    {
      Transferable t = new StringSelection("");
      dragSource.startDrag(dge, DragSource.DefaultCopyDrop, t, this);
    }

    /**************************************************************************
     *
     * @param dsde DragSourceDragEvent
     *************************************************************************/
    public void dragEnter(DragSourceDragEvent dsde)
    {
    }

    /**************************************************************************
     *
     * @param dsde DragSourceDragEvent
     *************************************************************************/
    public void dragOver(DragSourceDragEvent dsde)
    {
    }

    /**************************************************************************
     *
     * @param dsde DragSourceDragEvent
     *************************************************************************/
    public void dropActionChanged(DragSourceDragEvent dsde)
    {
    }

    /**************************************************************************
     *
     * @param dsde DragSourceDropEvent
     *************************************************************************/
    public void dragDropEnd(DragSourceDropEvent dsde)
    {
      //hier kommst du rein, wenn du dann dein Element auslässt!
     //und hier machst du ein remove(this) (also vom panel wegnehmen) und wieder neu draufadden und schon isses dort   
    }
}

Die Frage ist ob das mit nullLayout überhaupt geht!

Entweder mit XY Layout von Borland oder mit dem new org.netbeans.lib.awtextra.AbsoluteLayout() von netbeans!
 
robsonLE hat gesagt.:
Ich möchte gern Swing-komponeneten wie z.B. JLabel oder JButton in einem freien Layout (nullLayout) bewegen können.
Mir fehlt aber leider ein Anstoss oder ein Beispiel dies zu realisieren (insofern das möglich ist). 🙁
Die Standard-DnD features wie Color oder Text sind ja kein Problem, aber Positionen verändern???
Wäre für einen Tip oder ein interessanten Literaturhinweis dankbar.

Hallo RobsonLE,
ich weiß nicht ob ich Dich richtig verstanden habe, aber es hat mich auch genervt die Komponenten mühselig mit setBounds zu positioniern nach dem Motto trail and error.
Als Ergebnis daraus habe ich mir ein Design Studio entwckelt, was meine Bedürfnisse erst mal recht gut erfüllt. Es ist mit Sicherheit noch erweiterbar (gute Ideen und Erweiterungen wird es immer geben). Den geamten Code hiereinzubinden würde ein wenig aufwendig sein. Am besten hinterlaß mal Deine E-Mail Adresse und ich schick Dir die Dateien zu.

Eine kurze Beschreibung zum Design Studio.

Mit der linken Maustaste wird auf ein leeres Fenster eine Komponente palziert (ein Rechteck mit einer Beschriftung). Diese Komponente kann mit der Maus frei im Fenster platziert werden. Ein Doppelklick auf diese komponente öffnet ein Dialogfenster. Dort kann definiert werden, um was es sich bei der Komponente handelt (JLabel, JText, JList und ein paar andere). Nachdem das Design abgespeichert wird, wird parallel eine Java Datei abgelegt, die eine eigenen Applikation darstellt. Im Menü File kann das Der Befehl "Test Design" gewählt werden. Daraufhin wird der Java Cimpiler aufgerufen und bei fehlerfreier compilierung das Programm gestartet. Es wird ein Fenster geöffnet in dem die zuvor ausgewählten und palzierten Elemente dargestellt werden.
Wenn dir das Design dann gefällt, kannst Du den Java Code, also die Dialogklasse in Deine eigene Anwendung einbinden.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben