Страница 1 из 1
jawax.swing.passwordfield
Добавлено: 17 дек 2004, 14:18
Chester
И снова здравствуйте!
Закинул на фрейм такой вот элемент как 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
;
}
Вот-с... 
Добавлено: 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).
поэтому
1) Порождается новый объект String, содержащий pass + temppass
2) Ссылка pass переназначается на этот новый объект
3) Старый объект остается лежать в куче, пока его не подберет сборщик мусора.
С точки зрения архитектуры это правильно - чем меньше двихущихся частей в системе, тем она надежнее.
Добавлено: 20 дек 2004, 09:58
Chester
Спасибо!