# JPasswordField warning : deprecation



## swerflash (25. Mrz 2006)

Hallo, ich wollte fragen warum diese Warnung kommt und wie ich es richtig machen muss, damit sie nicht mehr kommt:
warning: [deprecation]getText()in javax.swing.jPasswordField has been deprecated



```
private void jSchaltflächeMouseClicked(java.awt.event.MouseEvent evt) {                                           
    
     
        String pw = "test";

        if(pw.equals(jPasswordFeld.getText()))
        {
            jEingabefeld2.setText("Bingo");
        }
        else
        {
            jEingabefeld2.setText("Falsch!");
        }

    }
```


jEingabefeld2 = jTextField,jPasswordFeld = jPasswordField und JSchaltfläche = jButton.


Danke


----------



## Beni (25. Mrz 2006)

Ein Blick in die API hilft :wink:



> public String getText()
> 
> Deprecated. As of Java 2 platform v1.2, *replaced by getPassword*.


----------



## swerflash (25. Mrz 2006)

Wenn ich dich richtig verstehe, muss ich getText mit getPassword erstetzen, wenn ich das mache, dann funktioniert das nicht mehr



```
String pw = "test";

        if(pw.equals(jPasswordFeld.getPassword()))
        {
            jEingabefeld2.setText("Bingo");
        }
        else
        {
            jEingabefeld2.setText("Falsch!");
        }
```


wenn ich jetzt test eingebe, schreibt er "Falsch" also else.


----------



## Beni (25. Mrz 2006)

Ein Blick in die API würde zeigen, dass "getPasswort" einen char-Array zurückliefert, und keinen String. :wink:

Mit "java.util.Arrays.equals" kann man übrigens Arrays hervorragend vergleichen.


----------



## swerflash (25. Mrz 2006)

:bahnhof: ich verstehe die API nicht, leider  :cry: 

Wie muss ich mein Code anpassen, damit das funktioniert? Ich habe bisschen rumprobiert, ohne Erfolg.


----------



## Beni (25. Mrz 2006)

```
import java.util.Arrays;

...

char[] x = "test".toCharArray();
char[] pw = passwordField.getPassword();
boolean equals = Arrays.equals( x, pw );
```


----------



## swerflash (25. Mrz 2006)

Hmm interessant, danke. Hat funktioniert.

So sieht jetzt mein Code aus


```
char[] x = "test".toCharArray();
       char[] pw = jPasswordFeld.getPassword();
       boolean vergleich = Arrays.equals(x,pw);
       
        if(vergleich==true)
        {
            jEingabefeld2.setText("Bingo");
        }
        else
        {
            jEingabefeld2.setText("Falsch!");
        }
```
Habe ein Paar fragen.


```
char[] x = "test".toCharArray();
```

Damit wandle ich Object x vom Typ char ins Array. Angenommen ich will das später umwandeln und möchte erstmal test als char[] speichern. Ich habe folgendes versucht:

```
char[4] x = "test";
```
er sagt mir, dass mir hier noch ] fehlt ???:L 

```
boolean vergleich = Arrays.equals(x,pw);
```
Zu boolean habe ich schon mal was gelesen, aber noch nie angewendet, hier vergleicht er den Inhalt des Objectes x und pw vom Typ Array und gibt true zurück, wenn das wahr ist und false, wenn das falsch ist, und speichert das in die Variable vergleich rein.
Array besteht aus vielen Strings und String bersteht aus vielen chars[]?

Stimmt das was ich oben geschrieben habe, oder habe ich etwas falsch verstanden?

Warum muss ich pw nicht mit .toCharArray zu Array umwandeln, wie mein Object x? Wir haben das doch als char[] gespeichert und später vergleichen dann Arrays mit einander, pw ist aber von Typ char[], oder?


Danke schon mal im Voraus

PS: ich habe übrigens jetzt das in der API gefunden, was du mir unten aus API gezeigt hast, ich habe aber bevor ich hier mein Problem gepostet habe, versucht selber zu finden, nur ohne Erfolg, da ich nicht wusste nach was ich suchen soll und wie ich vorgehen muss, aber langsam verstehe ich das. Vieleicht werde ich bald API endlich verstehen.


----------



## Beni (25. Mrz 2006)

swerflash hat gesagt.:
			
		

> ```
> char[] x = "test".toCharArray();
> ```
> 
> Damit wandle ich Object x vom Typ char ins Array. Angenommen ich will das später umwandeln und möchte erstmal test als char[] speichern.


Nein: x ist eine Variable vom Typ "char[]" (also ein char-Array).
"test" ist ein hundsnormaler String.
"toCharArray()" ist eine Methode der Klasse "String". Diese Methode liefert als Resultat ein "char[]".



> Ich habe folgendes versucht:
> 
> ```
> char[4] x = "test";
> ...


Keine Ahnung wie du darauf kommst, mit Java hat dieser Syntax jedenfalls nichts zu tun...



> ```
> boolean vergleich = Arrays.equals(x,pw);
> ```
> Zu boolean habe ich schon mal was gelesen, aber noch nie angewendet, hier vergleicht er den Inhalt des Objectes x und pw vom Typ Array und gibt true zurück, wenn das wahr ist und false, wenn das falsch ist, und speichert das in die Variable vergleich rein.
> Array besteht aus vielen Strings und String bersteht aus vielen chars[]?



x ist ein Array aus chars, pw ist ein Array aus chars.
Arrays ist eine ganz normale Klasse ohne weitere Bedeutung. Sie könnte ebensogut "Habakuck" heissen.
"equals" ist eine statische Methode der Klasse "Arrays", und vergleicht den Inhalt zweier Arrays. Da ist nichts mehr dahinter.



> Stimmt das was ich oben geschrieben habe, oder habe ich etwas falsch verstanden?


Hm, beginn mal bei deinem Buch von vorne zu lesen :wink:



> Warum muss ich pw nicht mit .toCharArray zu Array umwandeln, wie mein Object x? Wir haben das doch als char[] gespeichert und später vergleichen dann Arrays mit einander, pw ist aber von Typ char[], oder?


char[] ist ein Array, da gibt es nichts umzuwandeln
.toCharArray wirkt nicht auf "x", sondern auf "test". Es verändert "test" aber nicht, sondern es berechnet aus "test" einen neuen Wert, eben der Chararray ['t', 'e', 's', 't'] der dann über "x" angesprochen werden kann.


----------



## swerflash (25. Mrz 2006)

Beni hat gesagt.:
			
		

> Hm, beginn mal bei deinem Buch von vorne zu lesen :wink:


 :lol:  :roll:  :bae: 
Hehe, wird nichts bringen, habe 2 schlechte Bücher erwischt, eins war Java für Dummies und in dem anderem Buch war nur Theorie, keine Beispiele und nicht für Anfänger. Ich werde jetzt versuchen Java mit NetBeans(Matisse GUI Builder) und euch zu lernen ;-) hab schon mehr Fortschritte gemacht in paar Tagen als mit diesen 2 Büchern die ich paar Monate gelesen habe lol.


Ich denke ich habe verstanden, was du mir erklärt hast, danke dir. Und wenn ich richtig verstanden habe, dann:


```
char[] x = {'t','e','s','t'};
```
ist das gleiche wie


```
char[]x = "test".toCharArray();
```


't' ist ein char und test ist ein Array aus chars, in diesem Fall 4 chars, richtig?


----------



## Beni (25. Mrz 2006)

Also {'t','e','s','t'} ist ein Array aus chars, ja.

"test" hingegen ist ein String, ein Objekt.


----------



## swerflash (25. Mrz 2006)

Ok, danke.


----------

