2

编译下面的代码后,我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();
    }
}
4

4 回答 4

5

它是

String str = jtf.getText();

不是

String str = getText(jtf);

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

这将确保在 中显示的文本ActionListener反映JTextComponent.

于 2013-08-09T15:20:43.130 回答
2

替换这个

String str = getText(jtf);

String str = jtf.getText();

因为 getText 方法属于从JTextComponent继承的JTextField类。

于 2013-08-09T15:21:13.910 回答
2

你犯了一个愚蠢的错误:)

代替

String str = getText(jtf);

String str = jtf.getText();
于 2013-08-09T15:29:35.357 回答
2

它应该是:

String str = jtf.getText();

这是因为getText()JTextField对象的方法。

于 2013-08-09T15:22:03.007 回答