我有一个getText错误

Chi*_*bke 2 java swing

编译下面的代码后,我得到Could not find symbol包含该行的错误String str = getText(jtf).我检查了java文档,但我无法理解语法.请帮助我,因为我是一个完整的初学者.谢谢!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Frame implements ActionListener 
{
    Frame()
    {
        JFrame jf = new JFrame("Welcome");
        Container c = jf.getContentPane();
        JPanel jp = new JPanel();
        c.add(jp);
        JLabel jl = new JLabel("Please enter your name");
        jp.add(jl);
        JTextField jtf = new JTextField(30);
        jp.add(jtf);
        String str = getText(jtf);
        JButton jb = new JButton("Submit");
        jp.add(jb);
        jb.addActionListener(this);
        jl.setForeground(Color.black);
        jf.setBounds(200,200,400,400);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE); 
    }

    public void actionPerformed(ActionEvent ae)
    {
        JOptionPane.showMessageDialog(null,"Welcome"+str);
    }

    public static void main (String[] args)
    {
        Frame f = new Frame();
    }
}
Run Code Online (Sandbox Code Playgroud)

Rei*_*eus 5

它的

String str = jtf.getText();
Run Code Online (Sandbox Code Playgroud)

String str = getText(jtf);
Run Code Online (Sandbox Code Playgroud)

要修复String str错误,您需要使变量成为类实例变量.更好的是,只需创建JTextField jtf一个类实例变量并从中检索文本.

public class FrameTest implements ActionListener {


    private JTextField jtf;

    FrameTest() {
        JFrame jf = new JFrame("Welcome");
        jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);

        JPanel jp = new JPanel();
        jf.add(jp);
        JLabel jl = new JLabel("Please enter your name");
        jp.add(jl);
        jtf = new JTextField(30);
        jp.add(jtf);
        JButton jb = new JButton("Submit");
        jp.add(jb);
        jb.addActionListener(this);
        jl.setForeground(Color.black);
        jf.setVisible(true);
        jf.pack();
    }

    public void actionPerformed(ActionEvent ae) {
        JOptionPane.showMessageDialog(null, "Welcome" + jtf.getText());
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                FrameTest f = new FrameTest();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这将确保显示的文本ActionListener反映当前内容JTextComponent.