2016-06-04 3 views
0

Я пишу небольшое приложение и хотел бы добавить тот же обработчик для двух кнопок: Сохранить и Сохранить как. Для сохранения, если файл существует, он не должен открывать JFileChooser, просто сохраните содержимое, но с моим текущим кодом он всегда открывает диалоговое окно. Как мне это сделать? Вот мой кодJava swing Сохранить и сохранить как функции с помощью JFileChooser

public void actionPerformed(ActionEvent e) { 
    JComponent source = (JComponent)e.getSource(); 
    if (pathToFile.length()>0){ 
     File file = new File(pathToFile); 

     if (file.exists()){ 
      try(FileWriter fw = new FileWriter(file.getName() + ".txt", true)){     
       fw.write(area.getText()); 
      } 
      catch(Exception ex){ 
       System.out.println(ex.toString()); 
      } 
     } 
    } 
    else{ 
     if (fchoser.showSaveDialog(source.getParent())== JFileChooser.APPROVE_OPTION){ 
      try(FileWriter fw = new FileWriter(fchoser.getSelectedFile()+".txt")){     
       fw.write(area.getText()); 
       f.setTitle(fchoser.getSelectedFile().getPath()); 
       pathToFile = fchoser.getSelectedFile().getPath(); 
      } 
      catch(Exception ex){      
      } 
     } 
    } 

UPDATE Добавлен код для проверки, существует ли файл exsists. Он делает и не исключение, но дополнительный текст не записывается.

+0

Как вы это делаете? Конечно, не вызывать 'showSaveDialog'. Посмотрите на метод 'File # exists' – Robin

+0

Спасибо, я обновил свой код, но он все еще не работает. – cAMPy

ответ

2

Не относится к вашему вопросу, но:

fw.write(area.getText()); 

Не используйте метод записи в виде FileWriter. Это всегда будет записывать текст в файл, используя «\ n» в качестве разделителя строк, который может быть или не быть корректным для ОС, на которых работает ваш код.

Вместо этого вы можете использовать write(...) метод JTextArea:

area.write(fw); 

Тогда будет использоваться правильный разделитель строки.

Смежные вопросы