Announcement

Collapse
No announcement yet.

Geht das? 1 JButton-Objekt auf 2 JToolBar-Objekten.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Geht das? 1 JButton-Objekt auf 2 JToolBar-Objekten.

    Hallo zusammen,
    ich habe ein kleines Problem mit der JToolBar.
    Ich erstelle ein JButton, der in zwei verschiedenen Frames in der jeweiligen Toolbar angezeigt werden soll. Da der Button sich im Context ändern kann, soll es auch wirklich der Selbe sein.
    Beim Ansehen des ersten Frames war der Button dort. Nach Erstellen des zweiten Frames war der Button auch dort. Switche ich zurück (beide Frames sind nicht gleichzeitig sichtbar) zum ersten Frame ist der Button dort verschwunden. Wieder zum zweiten Frame geswitcht und dort verharrt er immer noch.

    Mit einer Routine ließ ich mir dann jeweils die Componenten der Toolbars auflisten, und siehe da: der Button ist von der ersten Toolbar vollständig verschwunden. Selbst die Indizes der nachfolgenen Buttons sind um 1 reduziert worden.

    Dummerweiße habe ich meine Klassen jetzt so gestrickt, daß ich nicht einfach so pro Frame einen eigenen Button anzeigen kann.
    Hat also jemand ne Ahnung warum das so ist, und wie man das beheben kann?

    Danke,
    Jan.

  • #2
    Fuer eine solche Anwendung ist es generell ratsamer das ButtonModel zu implementieren und die Buttons dann separat zu erzeugen. Das hat den Vorteil, dass die Buttons mit dem ButtonModel das gleiche Verhalten aufweisen. Ich befuerchte,das Du Dein Design nochmal überarbeiten musst.

    H.I.H.

    Rocc

    Comment


    • #3
      Hallo Rocco,

      danke für die Antwort. Nur leider kann ich mit dem Tip 'ButtonModel' nicht viel anfangen. Ich kenne es nur im Zusammenhang mit JRadioButton's.

      Zu meinem Problem:<BR>
      ich habe es jetzt anders umgesetzt. Es ist dabei sogar besser geworden als meine erste Idee... ;-)

      Aber die Frage, 'warum ist das so?' kann mir wohl keiner Beantworten, oder?
      Ich dachte immer bei einem JToolBar.add() würde nur eine Referenz angelegt. Aber anscheinend muß da noch mehr laufen.
      Ich will es gerne Verstehen, damit ich nicht nochmal ein solch eine Fall laufe... Hat mich letztendlich einen ganze Tag gekostet.

      Ciao,
      Jan

      Comment


      • #4
        Kurze Erläuterung: in java werden die Daten getrennt vom layout behandelt. Aus diesem Grunde gibt es zum Bsp. für AbstractButton (also JMenuItem, JButton ..) das ButtonModel, welches ausschließlich die Daten behandelt.
        Dieses Model wird dem AbstractButton mit setModel(ButtonModel) zugewiesen. Der AbstractButton selbst hat weitere Eigenschaften (Name, Icon ...), die für die Daten irrelevant sind. Will man also mehrere AbstractButtons mit dem gleichen Verhalten haben, erzeugt man alle AbstractButton und weist diesen das gleiche ButtonModel zu.

        Dieses Model ist für Einsteiger etwas verwirrend, aber unglaublich mächtig :-))

        Trotzdem ein kleiner Tip: Es mach mehr Sinn mehr Arbeit in die Implementierung der Modelle zu legen, als an mehrfach die gleiche LayoutKomponente zu benutzen.
        H.I.H.
        Rocc

        Comment


        • #5
          Danke Rocco,
          das war sehr Lehrreich. Habs auch direkt ausprobiert und ich denk ich habs verstanden.

          Ciao, Jan

          Comment

          Working...
          X