Java JTextfield und JButtons wieder entfernen

Hallo Leute,

Ich hab ein Problem in meinem Java Programm.
Ich programmiere gerade einen Taschenrechner.
Dazu sollen im JFrame Fenster abwechselnd ein JTextField und mehrere JButtons(für die Rechenzeichen) angezeigt werden. In das Textfeld wird eine Zahl eingegeben und dann soll das Textfeld verschwinden und die Buttons mit den Rechenzeichen erscheinen und abwechselnd so lange weiter
bis unter den Rechenzeichen = gedrückt wird.

Mein Problem dabei ist aber, dass ich nicht weiß wie ich das Textfeld bzw. die Buttons aus dem JFrame-Fenster entferne. Bisher habe ich schon folgende Befehle ausprobiert:

  1. getContentPane().remove(Eingabe);
  2. remove(Eingabe);
    aber beides hat nicht funktioniert.

Ich hoffe Ihr könnt mir helfen und schonmal Danke im Vorraus

mfg
Maximilian Glumann

Hey

Also. Alle Programmierer sind faul. Daher löschen wir nix sondern lassen es verschwinden(Unsichtbar). Also wenn die Eingabe fertig ist(wie auch immer du das feststellst) machst du:

if(eingabe abgeschossen){

jTextField1.setVisibel(false);
jPanel2.setVisibel(true); //Operantenfenster angezeigt
this.repaint(); //muss nicht ist aber besser

und dann…

if (keypress…){

jTextField1.setVisibel(true);
jPanel2.setVisibel(false);
this.repaint();

Als Tipp:
Alles was du ausblendest in extra Panels packen. So Bleiben die Eigenschaften des Frams oder deines MainPanels erhalten; wie größen automatik.
2tens benutzt man kein Textfield (als ich sage das mal so Anfänger) weil man zu Beispiel FFa23 sehr wohl eingeben kann aber die meißten einen Rechner für Zahlen programmieren. Hierzu nutzt man jFormattedTextField- und stellt unter Eigenschaften die eingabe - Akzeptanz ein!

Hallo Maximilian.

Wenn die Buttons und Textfelder nicht zwingend entfernt werden müssen und ein „verstecken“ reicht evtl. schon ein Aufruf der Funktion setVisible(false).

Thomas

Hallo,

tut mir leid aber momentan habe ich keine Zeit Fragen zu beantworten. Ohne konkreten Code ist das eh schwierig, gerade wenn du dich in diesem Gebiet neu einarbeitest.
Wünsche dir trotzdem viel Erfolg!

Viele Grüße

Thomas

Hallo,

meines Erachtens ist das Entfernen von Komponenten der falsche Ansatzpunkt.
Wenn du eine Komponente verstecken (verschwinden) lassen willst, wäre komponente.setVisible(boolean) wohl eher der richtige Weg.
Dabei ist dann aber Vorsicht geboten mit dem jeweils verwendeten Layoutmanager. Das kann dir nämlich das Aussehen kräftig verändern. Also müsste man die Komponenten absolut ausrichten.

Ich denke mal der beste Weg wäre, die jeweiligen Komponenten einfach mit komponente.setEnabled(boolean) „einzugrauen“, also unbedienbar zu machen.

Und ganz zum Schluss eine kleine Bemerkung:
Ich kann natürlich nicht wissen, was du im Einzelnen vorhast. Aber bei einem Taschenrechner ist das Un/Sichtbarmachen von Komponenten schon ein bischen ungewöhnlich.
Also mir würde jetzt kein Taschenrechner einfallen, der das macht.

Torsten

Hi,

ganz sicher beantworten kann ich dir die Frage nicht, weil ich das selbst bisher kaum gemacht habe. Wo genau hast du denn das Textfeld eingebettet? Liegt das wirklich direkt im JFrame, oder hast du das in einem Panel eingefügt? Dann wäre der Zugriff nämlich wohl eher myPanel.remove()… Aber alles ohne Garantie. :wink:

Generell finde ich die von dir beschriebene Umsetzung sehr umständlich. Wäre nicht auch eine einfachere Variante möglich, z.B. zwei (oder mehrere) Textfelder nebeneinander mit einem (oder mehreren) Buttons jeweils dazwischen.

Wenn du einen „echten“ Taschenrechner schreiben willst, hast du dann mal darüber nachgedacht nur ein Textfeld zu verwenden und die entsprechenden Buttons?

VG,
Patrick

Hallo Maximilian,

Danke für Deine Anfrage und Dein Vertrauen, aber ich komme gerade erst aus dem Urlaub und sehe mich auch in der nächsten Woche nicht in der Lage, Experimente zu deinem Problem zu machen. Leider verstehe ich die Aufgabe auf die Schnelle auch nicht ganz. Kannst Du nicht einfach den Hintergrund des Feldes so ändern, dass es sich von der Basisfarbe nicht mehr unterscheiden lässt - oder ein zweites leeres Feld darüberlegen ? Leider kann ich Dir hier nicht wirklich behilflich sein, hoffe aber auf andere „Experten“, die sich Deiner annehmen.

Mit Gruß,
Frank-Thomas

Tut mir leid, da ich nicht weiterhelfen. GUI-Programmierung mit Swing habe ich noch nie gemacht.

Hallo,

bei deinem Problem sollte das folgende helfen.
Bevor du die neuen Komponenten hinzufügst, schreibe:

setVisible(false);
removeAll();

und danach fügst du die neuen Buttons mit

add(Component)

hinzu. Zum Schluss noch

setVisible(true);

Dadurch wird das JFrame neu gezeichnet und sollte die Felder korrekt anzeigen.

Gruß

Mirco

Hallo Maximilian,

leider kenne ich mich bei der GUI-Programmierung nicht so besonders gut aus.

Tut mir leid, dass ich nicht helfen.

Viele Grüße
Heike Andrae

„***.setVisibel(false)***“ bei der Antwort von RoK solltte .setVisible(false) sein.