Announcement

Collapse
No announcement yet.

Entfernen und Zufügen neuer Komponenten zur Laufzeit

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

  • Entfernen und Zufügen neuer Komponenten zur Laufzeit

    Hallo,<BR>
    ich habe folgendes Problem:<BR>
    Ich habe einen JFrame auf dem sich ein Panel1 mit Radiobutton befindet und ein Panel2 mit Textfeldern zur Eingabe.
    Je nachdem welcher Radiobutton gewählt wird, müssen verschiedene Textfelder auf Panel2 eingeblendet werden. <BR><br>
    Meine Frage ist, wie ich zur Laufzeit:<br>
    1. die Bestehenden Elemente lösche und <br>
    2. neue Komponenten auf dem Panel2 plazieren.
    <br><br>
    Ich habe zwar die Möglichkeit mit <i>Panel2.remove(textfeld1) </i>das Feld zu entfernen, nur tut sich nichts sichtbares und der Befehl <i>Panel2.add(getTextfeld1)</i> läuft zwar ohne Fehler, aber auch hier tut sich nichts.
    <br>
    Meine erste Idee war, einfach mehrere Panels mit den benötigten Textfeldern zu erzeugen und entsprechend die nicht nötigen Panels mit <i>Panel3.setVisible(false) </i>zu verstecken(das funzt auch), aber ein <i>Panel4.setVisible(true) </i>bringt dann nichts zur Anzeige.
    <br>
    Kann mir da jemand helfen?<br>
    besten dank<br>
    timo

  • #2
    Ich würde panel3 und panel4 erzeugen, die jeweils einem radiobutton zugeordnet sind.

    wird ein radiobutton selektiert, dann würde ich panel2.removeAll() und panel2.add(panel3, "Center")
    benutzen

    Comment


    • #3
      Hallo Timo,<br>
      <br>
      Grundsätzlich ist es eine gute Idee, alle GUI-Komponenten, die bei Auswahl eines Radio-Buttons angezeigt werden sollen, auf einem Panel zu plazieren. Dann hast Du einen Panel für die Wahl des Radio-Button 1 und einen für Radio-Button 2 und so weiter.<br>
      <i>add</i> und <i>remove</i> sind prinzipiell die richtigen Methoden. Ich würde ausprobieren, nach dem remove des einen Panels und dem add des andren Panels Methoden wie <i>update()</i>, <i>refresh()</i> oder <i>repaint()</i> auf den Panel (oder Pane oder Window oder...), bei dem remove und add aufgerufen wurden, aufzurufen.<br>
      <br>
      In der Hoffnung, geholfen zu haben,<br>
      Stefa

      Comment


      • #4
        Hallo zusammen,
        ich habe das Problem nicht elegant aber zweckmäßig gelöst indem ich einfach nicht benötigte Felder mit <i>TextField1.setVisible(false)</i> ausblende. Das ist zwar nicht schön, erfüllt aber seinen Zweck.<br><br>
        Aber ich habe schon das nächste Problemchen (sorry ich bin absoluter swing-Anfänger).<br>
        Wie kann ich eine Nachricht von einem Frame(Window) an einen anderen schicken?<br>
        Das Problem ist das folgende:
        <br>
        Ich öffne ein Fenster aus einem anderen Fenster heraus und möchte das öffnende Fenster benachrichtigen, wenn das geöffnete Fenster(mit <i>DefaultClosingOperation=JFrame.DO_NOTHING_ON_CL OSE</i> mit Button-Klick geschlossen wird.<br>Im Moment horche ich auf eine Statusänderung des geöffneten Fensters und ändere den Status bei Button-Klick auf <i>JFrame.HIDE_ON_CLOSE</i>. Das hat den Effekt, dass das geöffnete Fenster erst minimiert wird, bevor es geschlossen wird.<br>
        Wie kann ich sonst noch Nachrichten von einem Fenster an ein anderes schicken?
        <br><br>
        Vielen Dank<br>
        tim

        Comment

        Working...
        X