сохранение setText после закрытия JDialog

У меня есть JDialog, который работает как «Окно настроек». Я выбираю путь к файлу сохранения и нажимаю кнопку с именем «Сохранить». Он сохраняет путь и отображает его в файле JTextField. Моя проблема в том, что когда я закрываю JDialog под названием «Настройки» и снова открываю его, JTextField не отображает новейший путь. Я думаю, что это как-то связано с JDialog и что он не хранит переменную setText. Как я могу сохранить новый текст в JTextField?

Это фрагмент моего кода:

public class Settings extends JDialog {

textField = new JTextField("C\\:");
        textField.setBounds(10, 36, 254, 28);
        panel.add(textField);
        textField.setEditable(false);
        textField.setColumns(10);

button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
              choose= new JFileChooser();
              choose.setCurrentDirectory(new java.io.File("."));
              choose.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

              int rVal = choose.showSaveDialog(Settings.this);
              if (rVal == JFileChooser.APPROVE_OPTION) {
                filename.setText(choose.getSelectedFile().getName());
                dir.setText(choose.getCurrentDirectory().toString());
                File file = choose.getSelectedFile();
               string myline = file.getAbsolutePath();

              }});

sbutton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             textField.setText(myline);

         }
         });

Поэтому я не хочу устанавливать для текстового поля значение myline и даже после закрытия JDialog сохранять его и отображать при следующем открытии JDialog.


person Handsken    schedule 14.11.2011    source источник


Ответы (3)


Если вы хотите, чтобы класс Settings сохранял значение настроек, убедитесь, что вы используете один экземпляр настроек и не создаете новый объект настроек при открытии диалогового окна.

person Jim    schedule 14.11.2011
comment
СПАСИБО! это было так просто, я постоянно создавал новые экземпляры. Когда я сделал Static, дырка сошлась! :) - person Handsken; 14.11.2011

объявить объект myline вне слушателя таким образом

private string myline = "":
public class Settings extends JDialog {
textField = new JTextField("C\\:");
        textField.setBounds(10, 36, 254, 28);
        panel.add(textField);
        textField.setEditable(false);
        textField.setColumns(10);

button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
              choose= new JFileChooser();
              choose.setCurrentDirectory(new java.io.File("."));
              choose.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

              int rVal = choose.showSaveDialog(Settings.this);
              if (rVal == JFileChooser.APPROVE_OPTION) {
                filename.setText(choose.getSelectedFile().getName());
                dir.setText(choose.getCurrentDirectory().toString());
                File file = choose.getSelectedFile();
                myline = file.getAbsolutePath();

              }});

sbutton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             textField.setText(myline);

         }
         });
person Pratik    schedule 14.11.2011
comment
Это и используйте значение JTextField в вызове setCurrentDirectory, чтобы убедиться, что диалоговое окно заполнено тем, что было ранее заполнено. - person G_H; 14.11.2011
comment
Пробовал, но JDialog - это класс, и когда я закрываю JDialog, мне кажется, что он удаляет все данные и забывает, что я setText("some thing") - person Handsken; 14.11.2011

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

person Ashwinee K Jha    schedule 14.11.2011