Java 按JButton键拆分字符串

Java 按JButton键拆分字符串,java,swing,jframe,jbutton,actionlistener,Java,Swing,Jframe,Jbutton,Actionlistener,当我按下按钮时,我试图将来自JTextField的输入拆分为一个单词数组。当我按下按钮时,程序会给我一个巨大的错误列表。分割句子的代码行以及我在action listener中调用类的位置就是eclipse表示错误的来源。我不知道为什么会出现这个错误,也不知道如何修复。我试过很多不同的方法,但都不管用。如果你能解释为什么这不起作用,或者如何修复它,那就太好了。这是我的密码。谢谢你的帮助 主类: public class Control { public static void main

当我按下按钮时,我试图将来自JTextField的输入拆分为一个单词数组。当我按下按钮时,程序会给我一个巨大的错误列表。分割句子的代码行以及我在action listener中调用类的位置就是eclipse表示错误的来源。我不知道为什么会出现这个错误,也不知道如何修复。我试过很多不同的方法,但都不管用。如果你能解释为什么这不起作用,或者如何修复它,那就太好了。这是我的密码。谢谢你的帮助

主类

public class Control {

    public static void main(String[] args) {
        OpenWindow ow = new OpenWindow();
        ow.window();
    } 
}
public class OpenWindow extends JFrame{
//Making variables
String input;
String firstWord2;
JButton jb = new JButton("Button");
JLabel jl = new JLabel();
JTextField jtf = new JTextField(40);
JPanel jp1 = new JPanel(new GridLayout(3,1));
SentenceSplitter ss = new SentenceSplitter();

public void window() {
    //Make window pop up
    setTitle("Project");
    setSize(600, 300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    //Action Listener
    jb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            input = jtf.getText();
            //Error from line below
            ss.split();

            firstWord2 = ss.getFirstWord();

            jl.setText(firstWord2);
        }
    });
    //Add JFrames
    jp1.add(jtf);
    jp1.add(jb);
    jp1.add(jl);
    add(jp1);
}
//Make input accesible from other classes
String getInput() {
    return input;
}
}
public class SentenceSplitter {

String firstWord;

public void split() {

    OpenWindow ow2 = new OpenWindow();
    //Get input
    String sentence = ow2.getInput();
    //Error from line below
    String[] splitSentence = sentence.split(" ");

    firstWord = splitSentence[0];
}
String getFirstWord() {
    return firstWord;
}
}
二等舱

public class Control {

    public static void main(String[] args) {
        OpenWindow ow = new OpenWindow();
        ow.window();
    } 
}
public class OpenWindow extends JFrame{
//Making variables
String input;
String firstWord2;
JButton jb = new JButton("Button");
JLabel jl = new JLabel();
JTextField jtf = new JTextField(40);
JPanel jp1 = new JPanel(new GridLayout(3,1));
SentenceSplitter ss = new SentenceSplitter();

public void window() {
    //Make window pop up
    setTitle("Project");
    setSize(600, 300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    //Action Listener
    jb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            input = jtf.getText();
            //Error from line below
            ss.split();

            firstWord2 = ss.getFirstWord();

            jl.setText(firstWord2);
        }
    });
    //Add JFrames
    jp1.add(jtf);
    jp1.add(jb);
    jp1.add(jl);
    add(jp1);
}
//Make input accesible from other classes
String getInput() {
    return input;
}
}
public class SentenceSplitter {

String firstWord;

public void split() {

    OpenWindow ow2 = new OpenWindow();
    //Get input
    String sentence = ow2.getInput();
    //Error from line below
    String[] splitSentence = sentence.split(" ");

    firstWord = splitSentence[0];
}
String getFirstWord() {
    return firstWord;
}
}
三等舱

public class Control {

    public static void main(String[] args) {
        OpenWindow ow = new OpenWindow();
        ow.window();
    } 
}
public class OpenWindow extends JFrame{
//Making variables
String input;
String firstWord2;
JButton jb = new JButton("Button");
JLabel jl = new JLabel();
JTextField jtf = new JTextField(40);
JPanel jp1 = new JPanel(new GridLayout(3,1));
SentenceSplitter ss = new SentenceSplitter();

public void window() {
    //Make window pop up
    setTitle("Project");
    setSize(600, 300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    //Action Listener
    jb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            input = jtf.getText();
            //Error from line below
            ss.split();

            firstWord2 = ss.getFirstWord();

            jl.setText(firstWord2);
        }
    });
    //Add JFrames
    jp1.add(jtf);
    jp1.add(jb);
    jp1.add(jl);
    add(jp1);
}
//Make input accesible from other classes
String getInput() {
    return input;
}
}
public class SentenceSplitter {

String firstWord;

public void split() {

    OpenWindow ow2 = new OpenWindow();
    //Get input
    String sentence = ow2.getInput();
    //Error from line below
    String[] splitSentence = sentence.split(" ");

    firstWord = splitSentence[0];
}
String getFirstWord() {
    return firstWord;
}
}
在您的代码中

  • 创建OpenWindow

  • 在OpenWindow对象中,您正在创建一个
    SentenceSplitter
    ,并侦听单击

  • 在单击时,您正在调用先前创建的
    SentenceSplitter
    上的
    split
    方法

  • 在split中,您正在创建一个新的
    OpenWindow


  • 您可能应该做的是将字符串作为输入参数传递给
    split
    方法

    检查并确保“句子”不为空。在
    SentenceSplitter
    中创建新的
    OpenWindow
    这一事实看起来像是个问题。我只需要让
    split()
    返回一些东西并接受字符串作为输入参数。你甚至可以把这个方法变成静态的,只使用
    SentenceSplitter
    作为一个“util”类。祝你愉快。