2015-01-28 2 views
1

Я пытаюсь сохранить файл .txt, где пользователь выбирает использование JFileChooser.Как вызвать метод, который принимает строку?

У меня есть 3 метода

Вещь 1 получает путь к файлу и сохраняет его в строку под названием File1.

Для этой цели Thing 2 требуется эта строка, чтобы сохранить файл в нужном месте.

Однако, когда я запускаю thing2 в GUI ActionPerformed, он дает мне ошибку, так как требует передачи строки. Я передаю «String File1», но он не работает.

thing1

JFileChooser chooser; 
     String choosertitle = null; 
     String File1 = null; 

chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new java.io.File(".")); 
chooser.setDialogTitle(choosertitle); 
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

chooser.setAcceptAllFileFilterUsed(true); 

if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { File1 = chooser.getCurrentDirectory() + ""; 
    } 
else { 
    JOptionPane.showMessageDialog(null,"No Selection "); 

    } 

    fileTextField.setText(File1); 
return File1; 

вещь 2

 String nameOfFile = (""); 
    String choice = comboBox.getSelectedItem() + ""; 

    JOptionPane.showMessageDialog(null,File1); 


    if ("All Messages".equals(choice)){ 
     nameOfFile = ("Messages"); 
    } else if 
     ("All Email Address".equals(choice)){ 
     nameOfFile = ("Address Book"); 
    } 

    File f = new File (File1 + nameOfFile+ ".txt"); 
    FileWriter fw; 
    try { 
     fw = new FileWriter(f); 
     fw.write("This is a file created by Joe "); 
     fw.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(Export.class.getName()).log(Level.SEVERE, null, ex); 
    } 


    boolean allFieldsCheck = !choice.equals("Please Select What You Would Like To Export") && !fileTextField.equals(""); 
    if (allFieldsCheck == false) { 
     InputError ipe = new InputError(); 
     ipe.setVisible(true); 
    } else { 
     //add new message 
    } 

ActionPerformed

private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {            

     thing2(String File1); 

    }       

все я хочу код выше, чтобы сделать, это получить место, где пользователь хочет сохранить файл а затем сохраните его там.

Любая помощь будет признателен, как я новичок в этом

+0

'thing2 (String File1);' означает 'передать новую неопределенную строку с именем 'File1'. Если 'File1' уже определен, просто перейдите в' File1' вместо 'String File1'. Подпись метода обрабатывает тип аргумента, а не вызывающего. Кроме того, вы должны более подробно описать актуальную проблему. «не работает» не является проблемой. Вы также должны показать фактические сигнатуры методов, а не только содержание методов. – tnw

+1

Собственно, 'thing2 (String File1);' на самом деле ничего не значит, это просто синтаксическая ошибка. В фактических аргументах метода могут появляться только выражения (включая переменные), а не имена типов. –

ответ

1

Вы должны изменить exportButtonActionPerformed() метод:

private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    thing2(File1); 
} 

но переменная File1 определены в thing1 должна быть видны из этого метода, например:

public class AClass 
{ 
    /* declared here in order to be visible both from thing1 and to ActionPerformed */ 
    private String File1 = null; 

    /* thing1 */ 
    public void AMethod() { 
     JFileChooser chooser = new JFileChooser(); 
     chooser.setCurrentDirectory(new java.io.File(".")); 
     chooser.setDialogTitle(choosertitle); 
     chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

     chooser.setAcceptAllFileFilterUsed(true); 

     if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
      File1 = chooser.getCurrentDirectory() + ""; 
      fileTextField.setText(File1); 
     } else 
      JOptionPane.showMessageDialog(null,"No Selection "); 
    } 

    /* ... */ 

    /* ActionPerformed */ 
    private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {            
     thing2(File1); 
    } 
} 
0

Вы должны назвать его просто так:

private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    thing2(File1); 
} 

(BTW: Немного больше Java-как именование бы сделать его легче следовать .)

0

Сначала определите переменную File1 и затем передать его в ваш метод.

String file1 = "file path"; // variable name should be start with small case 
thing2(file1); 
Смежные вопросы