Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JTextField获取文本时字符串为null_Java_Eclipse_String_Jtextfield_Jtextarea - Fatal编程技术网

Java 从JTextField获取文本时字符串为null

Java 从JTextField获取文本时字符串为null,java,eclipse,string,jtextfield,jtextarea,Java,Eclipse,String,Jtextfield,Jtextarea,好吧,我编辑了原始帖子,所以没有人会再就标题争论,这是我的错,所以现在不要生气。。。 我有一部分代码是以文本字段的文本为基础的,实际上有两个文本字段,但用户一次只能使用一个文本字段,并将其搜索到存储在终端中的文件中。问题是我总是得到一个空字符串,即使其中一个文本字段中有文本。。。 代码如下: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; public class Searc

好吧,我编辑了原始帖子,所以没有人会再就标题争论,这是我的错,所以现在不要生气。。。 我有一部分代码是以文本字段的文本为基础的,实际上有两个文本字段,但用户一次只能使用一个文本字段,并将其搜索到存储在终端中的文件中。问题是我总是得到一个空字符串,即使其中一个文本字段中有文本。。。 代码如下:

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

我真的要把所有的东西都扔出窗口,因为我知道解决方案很简单,但我无法得到它…

str的唯一值保证总是为line.containsstr提供true,它是空字符串


您应该假设String.contains方法确实根据其规范工作。在JavaSE如此核心的方法中,以前未被检测到的错误的可能性是可以忽略的,尤其是像您所建议的那样引人注目的错误。当然,声称它在没有任何确凿证据的情况下被破坏只会浪费每个人的时间。。。尤其是你的。

对不起大家。。。忘了在开头打招呼了。str的值是多少?res是什么?声明在哪里?看起来需要在进入方法时清除它。String.contains不起作用;是你的代码不起作用。现在似乎是学习如何使用java调试程序的好日子。声称它在没有任何确凿证据的情况下被破坏只会浪费每个人的时间。。。特别是你的+1好,让我们澄清一些观点:-首先,我没有要求任何东西。contains不起作用并不意味着该方法被窃听或诸如此类。这意味着在这种情况下,它不适用于这个或那个问题。在指责之前试着思考…-第二件事:res是一个文本区域,我应该把结果放在其中。str是一个简单的字符串,包含用户想要搜索的单词…-第三件事:我调试了它,试了又试。奇怪的是,如果我将第一次读取放入while,就像上面的代码一样,文件中的每一行都会写入TextArea,因此string.contains不起作用;相反,如果我将读取放入循环,修改while whilein.readLine=NullEclipse给了我NullPointerException…@LeonGuerrero-这意味着在这种情况下它不适用于此。事实上,它在这种情况下确实有效。问题是你使用的不正确。。。以某种方式或者曲解证据。坦白说,我不相信你向我们描述的证据。这是难以置信的。还有一些事情你没有解释。。。或者没有注意到。既然我不能坐在你旁边看真正的源代码、调试器输出等等,我就无能为力了。@StephenC你仍然认为我在指责这个方法。。。我写这句话是因为我没有别的想法。。。方法string.contains工作正常。代码不起作用。我很抱歉,如果我造成了一些误解,但我认为标题只是指示性的。。。我还是编辑了整篇文章。。。