2016-06-19 9 views
-2

Я новичок в Java и Swing. Я создал jframe, и я добавил в него меню и MenuItem.jtextfield сохраняет значение в jdialog после закрытия jdialog

При нажатии на пункт меню должен открываться jdialog. Теперь в jdialog есть jtextfield и jlabel. Теперь проблема для меня - «когда диалог открывается в первый раз, текстовое поле пуст, и это правильно. Теперь я закрываю jdialog, и я открываю его снова, но вместо того, чтобы получать пустое текстовое поле в jdialog, я получаю данные, введенные ранее ', что не является тем, что должно происходить, поскольку свойство jdialogs по умолчанию для закрытия по умолчанию установлено на «dispose». но это не для меня ...

Я не знаю, что я делаю неправильно. Я никогда не пробовал апплет/качели, прежде чем любым другим способом (рассмотреть это как моя первая программа демо обучения)

Image Второе изображение здесь

Second Image here

+1

Вместо этого используйте вместо этого 'JOptionPane.showInputDialog (..)'. Что касается диалога, либо создайте новый, либо (предпочтительнее), сохраните ссылку на текстовое поле и установите перед ним пустое. Но для лучшей помощи, скорее, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/) (в отличие от скриншотов, которые говорят нам почти ничего не знающего). –

+0

вот моя точная проблема: https://www.youtube.com/watch?v=6mfFOG5szvw – pratik

+0

Ваша точная проблема заключается в том, что вы не можете различать код Java и видео с YouTube. Мы не можем с этим справиться. –

ответ

0

JTextField является сохранение его значение, потому что это ISN» t находится под воздействием закрытия JDialog, вместо этого он скрыт как его родительский (JDialog) является невидимым

Установка диалога для удаления не переинициализирует дочерние компоненты , поэтому они сохраняют свои ценности. Некоторая дополнительная информация по этому поведению можно найти здесь:


Один из способов предотвратить/контролировать это путем «информирования» диалог протирать текстовое поле, как он закрывается путем добавления WindowEvent и предоставления необходимой функциональности в методе windowClosing()

Netbeans гуй-строитель будет генерировать это для вас следующее:

  • правой кнопкой мыши Dialog
    • События
      • Window
        • WindowClosing

Обеспечение:

private void jDialog1WindowClosing(java.awt.event.WindowEvent evt) {          
    // TODO add your handling code here: 
} 

В котором вы можете добавить: textfield.setText(""); очистить текстовое поле


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