Swing Toolbar zur Laufzeit austauschen

carom

Mitglied
Hallo!

Ich bastle gerade an einer Art Grafikprogramm. Dort gibt es Zeichenwerkzeuge, die ich in einem JInternalFrame - ganz "Photoshop like" eben - auswählen kann. Diese Werkzeuge besitzen individuelle Einstellmöglichkeiten. Beispielswiese hat das Linienwerkzeug Dicke und Farbe, das Rechteckwerkzeug zusätzlich jedoch noch eine optionale Füllung. Das Textzeichenwerkzeug will hingegen die Schriftart wissen.

Eigentlich wäre die JToolbar ja gut für solche Einstellungen geeignet. Da jedoch verschiedene Werkzeuge verschiedene Einstellungen benötigen... man ahnt es schon, ich müsste die JToolBar zur Laufzeit austauschbar machen können um verschiedene Darstellungen zu erhalten, je nach Werkzeug eben.

Wie könnte ich das realisieren? Verschiedene Darstellungen kann man ja mit dem CardLayout erreichen, allerdings will die JToolBar laut Doku am liebsten alleine unmittelbar in BorderLayout_Start des JFrames hängen, wenn sie zu 100% funktionieren soll.

Habt ihr ne Idee? Wenn euch noch eine andere Idee einfällt, die elegant aussieht, dann muss es nicht zwingend eine JToolBar sein.


Danke!
 
hast du das ausprobiert, welche Doku genau formuliert das wie?
BorderLayout START/ NORTH mag ja gerne sein, aber bestimmt doch auch innerhalb eines CardLayouts, welches zwischen
verschiedenen Karten je mit BorderLayout wechselt,

interessant wäre, was pasiert wenn man die ToolBar heraustrennt und dann auf eine andere Karte umschaltet
How to Use Tool Bars (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

aber wozu testen, das könntest du ja erstmal alles erledigen 😉
 
Hey, vielen Dank schon mal 🙂


hast du das ausprobiert, welche Doku genau formuliert das wie?


In deinem Link steht das wie folgt formuliert, oder habe ich das falsch interpretiert ?

For the drag behavior to work correctly, the tool bar must be in a container that uses the BorderLayout layout manager. The component that the tool bar affects is generally in the center of the container. The tool bar must be the only other component in the container, and it must not be in the center.

Wie dem auch sei, ich habe es jetzt anders gelöst. Ich habe nur eine einzige ToolBar, die absolut alles aufnimmt. Dinge, die semantisch zusammengehören, speichere ich in einer Gruppe (mithilfe einer Liste) ab. Mithilfe meines Controllers setze ich dann je nach Bedarf die Gruppen auf visible oder eben nicht. Das geht aber nur deswegen, weil unsichtbare Elemente nicht nur unsichtbar sind, sondern auch keinen Platz beanspruchen. Es gibt also keine Löcher in der ToolBar, wenn ich eine Gruppe ausblende.

Grüße
 
wie gesagt: die aktuelle Konfiguration mit BorderLayout usw. ist klar,
aber es ist nicht gesagt, ob das JPanel mit BorderLayout-Verteilung selber nicht woanders als Teil drin sein darf
 
Wenn ich dich nicht falsch verstehe, dann war das bei mir sogar schon immer der Fall. Doch, das ist natürlich möglich 🙂 Allerdings wollte ich intuitiv nur die ToolBar oder deren Inhalt tauschen, nicht gleich das ganze JPanel.
 

Zurück
Oben