сохранение setText после закрытия JDialog - PullRequest
1 голос
/ 14 ноября 2011

У меня JDialog, который работает как «Окно настроек».Я выбираю Save-File-Path и нажимаю кнопку с именем Save.Он хранит путь и отображает его на 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.

Ответы [ 3 ]

1 голос
/ 14 ноября 2011

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

1 голос
/ 14 ноября 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);

         }
         });
0 голосов
/ 14 ноября 2011

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

...