我有一个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时显示它。
答案 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实例变量,以便它记住最后一个目录位置。您还可以根据选择器中的当前文件初始化文本字段。