www.mikrocontroller.net

Forum: PC-Programmierung Java ComboBox, JPanel und mehrere Objekte


Autor: Olivia Baumgartner-schmidt (olivia63)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe eine Denkblockade oder bin gar auf dem Holzweg!

Ich habe ein Javaprogramm mit einem JFrame (wir nennen es mal FMain). In 
diesem FMain ist eie JComboBox mit 4 Items. Diese lassen sich auswählen, 
auswerten usw. FUNKTONIERT!
Des weiteren habe ich eine Klasse (diese nennen wir mal CButton), in der 
3 Buttons erstellt und in einer Gruppe zusammengefasst werden. Aus 
meinem MainFrame heraus kann ich nun 4 Objekte der Klasse CButton 
erstellen und mittels Übergabeparametern die Buttons entsprechend der 
Items benennen. Es wird schon deutlich, die Objekte und die ComboBox 
sollen mal zusammengehören.

Daneben habe ich ein leeres JPanel. Und nun zu meinem Problem: je nach 
gewähltem Item soll das enstprechende Objekt, also die Buttons, in 
diesem JPanel angezeigt werden.

Den Quelltext wollte ich nicht hochladen, da das Programm schon ziemlich 
fortgeschritten und somit etwas umfangreicher ist.

Für Tipps bin ich dankbar,

Oliv.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja und wo ist nun das Problem? Mach einfach mehrere Panels mit den 
Buttons und schalte immer nur eins sichtbar.

Autor: Olivia Baumgartner-schmidt (olivia63)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte eher an eine Art "iFrame" aus HTML, wenn du verstehst was ich 
meine. Aber damit laufe ich bei Java wohl gegen eine Wand. Das heißt 
(wenn ich richtig verstehe) einfach 4 Panels mit den Buttons anlegen und 
je nach gewähltem Item setVisible(true) und den Rest false.

Klingt einfach, macht aber in meinen Augen eine spätere Erweiterung des 
Programms, besonders der ComboBox, erschwerlich.
Wie ich das versuche (und scheinbar nicht checke) bräuchte ich nur einen 
Eintrag in der ComboBox hinzufügen und ein neues Objekt mit den 
jeweiligen Parametern erstellen lassen.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob etwas leicht erweiterbar ist, hängt vom Programmierer und vom Design 
der Software ab. Mit dem factory design pattern ginge das so wie du es 
sagst.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach es einfach folgendermaßen:
Wird ein Objekt in der Combobox ausgewählt, entfernst du alle Objekte 
aus dem Panel (removeAllComponents oder so heißt das) fügst den Button 
hinzu und rufst revalidate/validate (je nach restlicher Struktur) auf 
dem Panel auf. Vieleicht tuts das schon weiß aber nicht was du vorhast, 
mir erscheint das etwas doppelt gemoppelt wenn ein JCombobox Buttons 
anzeiget die auchoch in einer anderen Klasse sind und das ganze soll 
erweiterbar sein...
Eventuell ist es "sauberer" EINEN Button zu haben und die auszuführende 
Aktion/Reaktion über die Combobox zu realisieren.
Du könntest auch einen Button nutzen und per Combobox nur den 
Text/Aktion ändern.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.