2017-10-05 7 views
0

この小さなコードをファイルブラウザを開き、ファイルを選択して文字列 "content"に変換できるようにしました。今私はそれを使って何かをするためにこの文字列を別のクラスにしたいと思いますが、うまくいきません。今のところ私はちょうどそれが動作するかどうかを見るために、コンソールに文字列の内容をペーストするために、他のクラスに伝えたいだけです。ここで別のクラスでユーザーが選択可能な文字列を呼び出す

は、ファイルチューザ

JButton btnNewButton = new JButton("Bladeren"); 
    btnNewButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      JFileChooser fileChooser = new JFileChooser(); 
      fileChooser.setCurrentDirectory(new File(System.getProperty("user.home"))); 
      int result = fileChooser.showOpenDialog(null); 
      String content; 
      if (result == JFileChooser.APPROVE_OPTION) { 
       File selectedFile = fileChooser.getSelectedFile(); 
       System.out.println("Selected file: " + selectedFile.getAbsolutePath()); 
       content = readFile(selectedFile, StandardCharsets.UTF_8); 
       System.out.println(content); 
       textArea.setText(content); 

      } 

     } 
    }); 

そして、ここでのコードで、ここだけのシンプルな他のクラスへの呼び出し

JButton btnNewButton_1 = new JButton("Encrypt"); 
    btnNewButton_1.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      Encrypter.main(); 
     } 
    }); 

そして私は

public class Encrypter extends GUI{ 

public static void main(){ 
    System.out.println(GUI.content); 


}} 

他のクラスです私は事前に十分な情報をくれたことを願っています!

+2

の仕組みを理解するのに役立ちます願っています;'あなたのアクション・ハンドラ内にあるので、それを見ることができる場所、それはあります。あなたがその範囲を広げたいなら、おそらくそれをフィールドにしてください。 –

+0

'public static char [] content;'のような意味ですか? – 221flo221

+0

いいえ、まったくありません。フィールドにする。もし私が丁寧にあなたがあなたのJavaブックを再読したことを示唆していることを理解できなければ –

答えて

0

Stringを@ScaryWombatのように、あなたのクラスの先頭にある@ScaryWombatのように、あなたのActionListenerの外側に移動してください(インスタンス変数にする)。

その後
private String content; 

:次に

JButton btnNewButton = new JButton("Bladeren"); 
btnNewButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     JFileChooser fileChooser = new JFileChooser(); 
     fileChooser.setCurrentDirectory(new File(System.getProperty("user.home"))); 
     int result = fileChooser.showOpenDialog(null); 

     if (result == JFileChooser.APPROVE_OPTION) { 
      File selectedFile = fileChooser.getSelectedFile(); 
      System.out.println("Selected file: " + selectedFile.getAbsolutePath()); 
      content = readFile(selectedFile, StandardCharsets.UTF_8); 
      System.out.println(content); 
      textArea.setText(content); 

     } 

    } 
}); 

String引数(それはmainの名前がencryptそれを言うことができますも変更する方が良いでしょう)を受け入れEncrypterクラスのmain方法を変更します。

public class Encrypter extends GUI{ 

public static void encrypt(String content){ 
     System.out.println(content); 
    } 
} 

最後に、次のコードがfirsと同じクラス/メソッドにあると仮定します以下からのコード呼び出しEncrypter.encryptのTピース:

JButton btnNewButton_1 = new JButton("Encrypt"); 
btnNewButton_1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     Encrypter.encrypt(content); 
    } 
}); 
+0

ありがとう!これは完全に機能しました。私は今起こっていることを見る。 – 221flo221

+0

いいえ、upvoting /受け入れることを検討してください(あなたは新人ですので、この方法でStackOverflowが動作します) – pleft

+0

申し訳ありませんが、私はすでに回答を受け取りましたが、私はすでにupvoteでした! – 221flo221

0
ここ

は、私がメモ帳++で書いたいくつかの例であり、私はそこに任意のエラーをスライドdidntの願っています!

私は例は、あなたがその背後にある考え方は、文字列の内容 `の範囲

public class SOFTest() extends JFrame { 

    private TestClass testClass; 

    public SOFTest() { 
     setLayout(new FlowLayout()); 
     testClass = new TestClass(); 
     JButton button = new JButton("Print!"); 
     button.addActionListener(listener -> { 
      testClass.storeString("String to store"); 
      testClass.printString; 
     }); 
     add(button); 

     pack(); 
     setLocationRelativeTo(null); 
     setVisible(true); 
    } 

    class TestClass() { 

     private String string; 

     public void storeString(String string) { 
      this.string = string; 
     } 

     public void printString() { 
      System.out.println(string); 
     } 
    } 
} 
+0

返信いただきありがとうございます、これはいくつかのものを明確にしました! – 221flo221

+0

問題ありません! – Dinh

関連する問題