编译下面的代码后,我在该行包含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();
}
}
答案 0 :(得分: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
中的当前内容。
答案 1 :(得分:2)
替换此
String str = getText(jtf);
与
String str = jtf.getText();
因为getText方法属于从JTextField继承的JTextComponent类。
答案 2 :(得分:2)
应该是:
String str = jtf.getText();
这是因为getText()
是JTextField
对象的方法。
答案 3 :(得分:2)
你犯了一个愚蠢的错误:)
而不是
String str = getText(jtf);
DO
String str = jtf.getText();