1

我有一个用作“设置窗口”的 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 时显示它。

4

3 回答 3

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);

         }
         });
于 2011-11-14T12:08:32.413 回答
1

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

于 2011-11-14T12:45:26.550 回答
0

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

于 2011-11-14T12:34:08.897 回答