TextFieldのテキストを取り込むコード部分があります(実際には2つのTextFieldがありますが、ユーザは一度に1つしか使用できません)それを端末に格納されたファイルに格納します。問題は、これがコードであるTextFieldの1 ... にテキストがある場合でも、私は常に、null文字列を取得することである(逢引は、メソッドのactionPerformed()である:JTextField.getText()は、内容が内部に入っていてもnull値を返します
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Search implements ActionListener{
JFrame frame;
JButton click;
JLabel comando, carico;
JTextField textv, text;
JTextArea res;
String pathFile = "C:\\Log.txt";
String str= new String();
Search(){
frame = new JFrame("Search");
frame.setSize(400, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(1,2));
frame.setResizable(false);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(7,1));
click = new JButton("Cerca");
comando = new JLabel("Comando");
carico = new JLabel("A carico di:");
textv = new JTextField("");
text = new JTextField("");
res = new JTextArea("");
panel.add(comando);
panel.add(textv);
panel.add(carico);
panel.add(text);
panel.add(click);
res.setLineWrap(true);
res.setWrapStyleWord(true);
res.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
JScrollPane scroller = new JScrollPane(res);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
panel.add(scroller);
frame.add(panel);
click.addActionListener(this);
click.setSize(70, 35);
frame.setVisible(true);
}
public void actionPerformed (ActionEvent e){
if(e.getSource()==click){
res.setText(null);
if(textv != null) {cercaStringa(pathFile, textv.getText().toString());}
else {cercaStringa(pathFile, text.getText().toString());}
}
}
public void cercaStringa(String pathFile, String stringa){
try {
BufferedReader in = new BufferedReader(new FileReader(pathFile));
String line = new String();
while((line = in.readLine())!=null) {
if(line.contains(stringa)){
res.append(line);
res.append("\n");
}
}
}
catch(IOException ex) { ex.printStackTrace();}
}
public static void main (String[] args){
new Search();
}
}
私は本当に私は解決策は単純ですが、私はそれを得ることはできません知っているウィンドウの原因の外にすべてをスローするつもりだ...次の試験によって確認されたように
私はちょうどあなたのコードをテストし、期待どおりに動作します。どのようなエラーがありますか?例外はありますか?あなたはコードをデバッグしようとしましたか? printlnステートメントを置いて、変数に期待する値があるかどうか確認しましたか?コードをそのままそのままコピーしましたか? – assylias
'cercaStringa:asdad java.io.FileNotFoundException:C:\ Log.txt(指定されたファイルが見つかりません)... ' –
同じです。いくつかのレイアウトとエンコーディングの問題に加えて、コードはうまくいくようです。別の質問で示唆されているように、今ではデバッガを使って学ぶ時間になるかもしれません。 –