关闭JDialog后保存setText

时间:2011-11-14 11:59:14

标签: java swing jtextfield jdialog saving-data

我有一个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 个答案:

答案 0 :(得分:1)

以这种方式在侦听器之外声明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);

         }
         });

答案 1 :(得分:1)

如果您打算让Settings类存储设置的值,请​​确保在打开对话框时使用的是一个“设置”实例,而不是创建新的“设置”对象。

答案 2 :(得分:0)

您可以创建主类的JFileChooser实例变量,以便它记住最后一个目录位置。您还可以根据选择器中的当前文件初始化文本字段。