编译下面的代码后,我得到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)
它的
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.