swing: GridBagLayout Insets modifizieren.



  • Hi

    Ich hole mir über:
    (((GridBagLayout)(comp[0].getParent().getLayout())).getConstraints(comp[0])).insets;

    die Insets des Constraints Object welches dem Panel comp[0] zugeordnet ist.

    Insets ist eine field variable, es gibt keine getter/setter 😞

    Wie kann ich die Insets verändern?

    (((GridBagLayout)(comp[0].getParent().getLayout())).getConstraints(comp[0])).insets = new Insets(0,0,0,0);

    funktioniert nicht. Nach dem Aufruf sind die Insets immer noch auf dem alten Wert. Was mache ich falsch? 😕



  • Dir bleibt nichts anderes übrig als eine Stufe vorher deine Änderung zu machen. Nämlich am Constraint-Objekt. D.h. du musst dir ein Objekt vom Typ GridBagConstraints erzeugen und via setConstraints(Component comp, GridBagConstraints constraints) den Constraint dem Layout übergeben.

    (((GridBagLayout)(comp[0].getParent().getLayout())).setConstraints(comp[0], new GridBagConstraints(<deine Parameter>));
    

    Lass mich aber anmerken, dass kein besonders sauberer Stil ist alles in eine Zeile zu packen.



  • Hallo und vielen Dank!

    Das klingt ja ziemlich mieß! Angnommen ich habe einen Frame zu dessen content Pane ich ein Panel via this.getContentPane().add(panelXY, ConstraintsXY.... geadded habe.
    Jetzt möchte ich nachträglich die Insets verändern.

    Muss ich nun das Panel mit samt seinen COnstraints, insets etc irgendwie extrahieren, dann das Panel löschen und dann ein neues mit den modifizierten Insets wieder adden??

    Das wäre ja wirklich sehr umständlich.



  • Nein löschen musst du es nicht du kannst aber die Insets nur dadurch verändern in dem du die Constraints veränderst. Sehe dabei keine Umständliche Aktion.



  • ok danke noch mal. Mit umständlich meine ich das ich mir erst das alte gridbagconstraint objekt holen muss alle Parameter wie Position etc auslesen muss und dann eine neues gridbagconstraint objekt erstellem muss mit den alten und modifizierten Parametern.

    Ein gridbagconstraint Objekt:
    GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady)

    hat ja doch so viele Parameter das es schon umständlich wird diese in das neue GridBagConstraint Objekt umzukopieren..


Anmelden zum Antworten