jawax.swing.passwordfield

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
Chester
Сообщения: 60
Зарегистрирован: 06 дек 2004, 10:46
Откуда: Kyiv, Ukraine
Контактная информация:

И снова здравствуйте! :D

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

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

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

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

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

переменная pass вместо вводимого пароля получает полную чушь.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Ты вызываешь метод Object.toString(), который тип char[] унаследовал от java.lang.Object. Он возвращает адрес объекта в JVM.
У java.lang.String есть конструктор, котрый создает строчку из массива символов - дык надо использовать его
String pass = new String(temppass);
2B OR NOT(2B) = FF
Chester
Сообщения: 60
Зарегистрирован: 06 дек 2004, 10:46
Откуда: Kyiv, Ukraine
Контактная информация:

Спасибо Absurd!

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

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

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

Вот-с... :D
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

И во время каждой итерации у тебя порождается новый объект типа String.
Вообще-то для таких вещей (сборка строки в цикле) надо использовать StringBuffer
2B OR NOT(2B) = FF
Chester
Сообщения: 60
Зарегистрирован: 06 дек 2004, 10:46
Откуда: Kyiv, Ukraine
Контактная информация:

И во время каждой итерации у тебя порождается новый объект типа String.
... She gave me something, it was a mushroom...
Chester
Сообщения: 60
Зарегистрирован: 06 дек 2004, 10:46
Откуда: Kyiv, Ukraine
Контактная информация:

И во время каждой итерации у тебя порождается новый объект типа String.

- А почему????? (я в этом деле новичек), переменная ведь одна....
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

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

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

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

С точки зрения архитектуры это правильно - чем меньше двихущихся частей в системе, тем она надежнее.
2B OR NOT(2B) = FF
Chester
Сообщения: 60
Зарегистрирован: 06 дек 2004, 10:46
Откуда: Kyiv, Ukraine
Контактная информация:

Спасибо!
Ответить