Страница 1 из 1

jawax.swing.passwordfield

Добавлено: 17 дек 2004, 14:18
Chester
И снова здравствуйте! :D

Закинул на фрейм такой вот элемент как passwordfield

(при вводе пароля отображаются звездочки)

Как из него получить настоящий пароль????

При использовании вот такой конструкции

String login = jTextField1.getText();
char temppass[] = jPasswordField1.getPassword();
String pass = temppass.toString();

переменная pass вместо вводимого пароля получает полную чушь.

Добавлено: 17 дек 2004, 14:26
Absurd
Ты вызываешь метод Object.toString(), который тип char[] унаследовал от java.lang.Object. Он возвращает адрес объекта в JVM.
У java.lang.String есть конструктор, котрый создает строчку из массива символов - дык надо использовать его
String pass = new String(temppass);

Добавлено: 17 дек 2004, 14:39
Chester
Спасибо Absurd!

Теперь буду знать. :)

Я, правда уже понял, что дело в типах данных, и воспользовался старым дедовским методом:

String login = jTextField1.getText();
char temppass[] = jPasswordField1.getPassword();
String pass = "";
for(int i=0;i<temppass.length; i++) {
pass+=temppass;
}

Вот-с... :D

Добавлено: 17 дек 2004, 14:46
Absurd
И во время каждой итерации у тебя порождается новый объект типа String.
Вообще-то для таких вещей (сборка строки в цикле) надо использовать StringBuffer

Добавлено: 17 дек 2004, 14:51
Chester
И во время каждой итерации у тебя порождается новый объект типа String.

Добавлено: 17 дек 2004, 14:53
Chester
И во время каждой итерации у тебя порождается новый объект типа String.

- А почему????? (я в этом деле новичек), переменная ведь одна....

Добавлено: 20 дек 2004, 08:46
Absurd
- А почему????? (я в этом деле новичек), переменная ведь одна....
Объекты типа java.lang.String неизменяемы (immutable).
поэтому

Код: Выделить всё

pass+=temppass[i];
1) Порождается новый объект String, содержащий pass + temppass
2) Ссылка pass переназначается на этот новый объект
3) Старый объект остается лежать в куче, пока его не подберет сборщик мусора.

С точки зрения архитектуры это правильно - чем меньше двихущихся частей в системе, тем она надежнее.

Добавлено: 20 дек 2004, 09:58
Chester
Спасибо!