2011-11-14 102 views
1

我有一個作爲「設置窗口」工作的JDialog。我選擇一個保存文件路徑,然後單擊一個名爲Save的按鈕。它存儲路徑並將其顯示在JTextField上。我的問題是,當我關閉稱爲「設置」的JDialog並再次打開時,JTextField不顯示最新的路徑。 我認爲它與JDialog有關,它不存儲setText變量。我如何將新文本存儲在JTextField關閉JDialog後保存setText

這是我的代碼片段:

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

     } 
     }); 

所以我wan't到文本字段設置爲myline,甚至關閉的JDialog後,其存儲並顯示它打開的JDialog下一次。

回答

1

如果您打算讓Settings類存儲設置的值,請​​確保您使用的是一個「設置」實例,而不是在打開對話框時創建新的「設置」對象。

+0

謝謝!這很容易,我一直創造新的實例。當我做了一個靜態的東西時,洞裏的東西一起來了! :) – Handsken

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

     } 
     }); 
+0

這樣,並在調用'setCurrentDirectory'時使用JTextField的值來確保對話框已被初始化爲先前填充的任何內容。 –

+0

試過了,但JDialog是一個類,當我關閉JDialog它感覺就像它刪除所有的數據,並忘記我'setText(「某件事」)' – Handsken

0

你可以讓你的主類的JFileChooser中的實例變量,以便它會記住最後的目錄位置。您也可以根據選擇器中的當前文件初始化文本字段。