2013-10-14 1 views
-4

Хорошо, на основании этой ссылки JTextField in JDialog retaining value after dispose Теперь я знаю, почему мой TextField сохраняет свое значение, но, глядя на мой код, я не знаю, как с этим справиться.Как обрабатывать ценность JTextField, не добавляя ее в диалог?

enter image description here

Мой TextField внутри моей главной панели, которая находится внутри Панель с разделителем. В качестве левого компонента у меня есть JTree, а в качестве правого компонента у меня есть основное окно. SplitPane входит в диалоговое окно, так ли кто-нибудь знает, как я могу справиться с этим? Как я могу принять значение TextField после его удаления и снова открыть? Я не могу просто добавить текстовое поле в диалоге, единственный способ, которым я не могу видеть до сих пор как-то сделать вектор для TextFields

+3

"Как я могу справиться с этим?" не является достаточно полным вопросом для нас, чтобы ответить. Что вы хотите сделать, и что вы пробовали, который не работал так, как вы ожидали? – arcy

+0

Я просто хочу взять значение текстового поля. Довольно просто. Проблема в том, что я не могу сделать это до сих пор, потому что текстовое поле не находится внутри диалогового окна, его внутри панели, которая находится внутри диалогового окна, я не могу избежать использования панели, потому что мне нужно это как SplitPane для управления настройкой программного обеспечения. Для первой попытки настройка работает нормально, но после ее удаления и открытия снова диалог указывает на последнее размещенное текстовое поле, основанное на ссылке, которую я опубликовал. Я ничего не пытался, потому что хочу увидеть, дает ли кто-нибудь лучшую идею, чем обрабатывайте это с помощью вектора JTextfield –

+1

_but, смотря на мой код_, хорошо, это больше, чем любой из нас может сделать прямо сейчас :-) Не видя кода (лучше всего как SSCCE), вопрос не отвечает, поэтому голосование закрывается – kleopatra

ответ

0

Чтобы решить эту проблему объявить текстовое поле как статические:

//JTextField Declaration and Initialization 
static JTextField NODES_TEXT_FIELD = new JTextField(); 

После этого улова значение TextField:

int nodes = Integer.valueOf(NODES_TEXT_FIELD.getText()); 

В моем случае было значение int, переключитесь; После этого очистите значение текстового поля, потому что оно будет сохранено, так как компонент статичен, если вы не сделаете этого после удаления диалога и снова откроете, вы увидите последнее используемое значение.

NODES_TEXT_FIELD.setText(""); 

Особая благодарность @kleopatra

+0

Если статическое решение, то в вашей настройке есть что-то очень неоптимальное: вам может понадобиться ссылка на поле (в случае более высокой абстракции ваших данных), но ничто не заставляет вас держать его _static_ – kleopatra

Смежные вопросы