# jformattedtextfield unsichtbar und wieder sichtbar machen



## a.pst (29. Mai 2012)

salve

ich hab comboboxen und formattedttextfield paare welche jeweils in einem panel angeordnet sind. wenn ich in der combobox etwas auswähle, soll das formattedttestfield sichtbar werden...so mein gedanke.

```
//ungefähr so hatte ich mir das vorgestellt, die methode an sich funktioniert, nur setVisibel(true) nicht
@Action
public void getBox1(){
int n1 = box1.getSelectedIndex();
if(n1 ==0){
feld1.setText("0,0");}
else{
feld1.setVisible(true);}
}
```
das problem ist nun, es funktioniert so nicht, das feld bleibt unsichtbar.
wenn ich hingegen feld1.setVisible(true); von einer anderen combobox in einem anderen panel aus aufrufe, funktioniert es...kann mir jemand dieses (lästige) verhalten erklären und wie ich das los werde?^^

ich habs mit feld1.repaint() und auch mit box1.repaint()

lg der gelegenheits programmierer^^


----------



## SlaterB (29. Mai 2012)

dass der Befehl funktioniert, schreibst du selber,

'von einer anderen combobox in einem anderen panel' klingt nach anderen Fehlern, Panel doppelt erzeugt, 
Aufruf an Objekten, die gar nicht in der GUI enthalten sind, 
vielleicht ist die Action auch nicht richtig registriert,

es gibt da diverse Möglichkeiten, die niemand hellsehen kann, poste immer vollständige Testprogramme


----------



## a.pst (29. Mai 2012)

nun ja...testprogramm...ich hab keins, das laufende programm ist der "test" 
als fauler hund, hab ich mit dem netbeans gui-builder "gearbeitet"...
...also "test für arme" mit einem System.out.println(n1); es wird der gewählte index ausgegeben, die ¹@Action ist also richtig registriert.
auswählen und wert eingabe funktionieren einwandfrei.

ich habe in der tat die panele samt inhalt dupliziert, der gui-builder bietet so eine funktion an...


----------



## SlaterB (29. Mai 2012)

du kannst dir von feld1 den Hashcode ausgeben lassen, an der Stelle wo es funktioniert und an der anderen,
wenn sie sich unterscheiden sind es unterschiedliche Felder (Achtung, wechselt bei jedem Programmstart)

danach kannst du zurückverfolgen, wer erstellt wann diese Textfelder, wird die init-Methode, gar der Konstruktor der Init-Klasse/ des Panels mehrfach ausgeführt?
wer sind die Aufrufer usw.

GUI-Builder sind immer schlimm, den Code hier zu posten wäre dann auch Qual,
aber nur um es nochmal zu sagen: äußere Zwänge schaffen auch kein Hellsehen ohne Code,
höchstens zusätzlich die oben genannten Tipps, die eigentlich auch selbstverständlich sind bei jeder Fehlersuche


----------



## a.pst (29. Mai 2012)

na mal sehn...

edit sagt: der hashcode ist identisch


----------



## a.pst (29. Mai 2012)

die geschichte macht mich noch ganz verrückt... feld1.isVisible() gibt true zurück...was soll man davon halten? *kopfschüttel*
hat noch wer eine idee?


----------



## Reggie (29. Mai 2012)

Schonmal versucht die aktuellen Bounds des Objektes auszugeben?
feld1.getBounds()
Vieleicht ist es zwar visible aber nicht im sichtbaren Bereich.


----------



## a.pst (29. Mai 2012)

Reggie hat gesagt.:


> Schonmal versucht die aktuellen Bounds des Objektes auszugeben?
> feld1.getBounds()
> Vieleicht ist es zwar visible aber nicht im sichtbaren Bereich.


das ergebnis ist dies:


> java.awt.Rectangle[x=305,y=12,width=0,height=0]


diese ausgabe bekomme ich auf jeden fall, egal ob ich das textfeld vom der vorgesehenen combobox oder von "außen", ausrufe, wo es funktioniert wie es soll...

danke für die idee


----------



## SlaterB (29. Mai 2012)

widht=0 klingt verdächtig,
kannst du das Programm wirklich nicht posten/ anhängen?
wegen der 'anderen Combobox' klingt es interessant genug, dass ich auch durch bisschen mehr wühlen würde


----------



## GUI-Programmer (29. Mai 2012)

Naja, dann ist doch klar, warum das Object nich sichtbar ist, wenn Breite und Höhe 0 sind. Somit bedeutet das, dass du A entweder keinen LayoutManager verwendest und die Breite und Höhe nicht setzt, oder B du einen LayoutManager falsch verwendest.


----------



## a.pst (30. Mai 2012)

GUI-Programmer hat gesagt.:


> Naja, dann ist doch klar, warum das Object nich sichtbar ist, wenn Breite und Höhe 0 sind. Somit bedeutet das, dass du A entweder keinen LayoutManager verwendest und die Breite und Höhe nicht setzt, oder B du einen LayoutManager falsch verwendest.


genau, der layout manager wars. vielen dank für die lösung


----------



## SlaterB (30. Mai 2012)

und das obwohl es von der anderen Stelle angeblich mit derselben width funktioniert?


> *egal* ob ich das textfeld vom der vorgesehenen combobox oder von "außen", ausrufe, *wo es funktioniert wie es soll...*


oder hast du dort nicht die width angeschaut, ist es gar doch wieder ein anderes Textfeld?
na wie auch immer..


----------



## a.pst (30. Mai 2012)

SlaterB hat gesagt.:


> und das obwohl es von der anderen Stelle angeblich mit derselben width funktioniert?
> 
> oder hast du dort nicht die width angeschaut, ist es gar doch wieder ein anderes Textfeld?
> na wie auch immer..


natürlich habe ich auch von dort width angeschaut und die war eben auch 0/0, klingt komisch, ist aber so.
du weißt, daß es bisher nur ein einzige sprache gibt, die als fehlerfrei angesehen wird? das ist TEX aus den 1950 jahren... ich verbuche das jetzt einfach unter mysterium und werk der götter^^


----------



## SlaterB (30. Mai 2012)

eben gerade bei vermeintlichen Mysterien wäre es schön den Quellcode zu sehen,
wird aber wohl doch nur einen profanen Fehler deiner Seite aufdecken (gemein gestichelt  ) muss also auch nicht sein


----------

