该程序的目的是从另一个类访问私有变量jtextfield。我创建了这个简单的程序,它从JTextField获取用户输入。我在一个类中有getter和setter方法,在另一个类中有按钮和字段。因此,我想在用户在文本字段中键入内容时打印一些内容。但是当单击该按钮时,程序不会打印并出错:
错误:javax.swing.JTextField [,140,62,124x20,layout = javax.swing.plaf.basic.BasicTextUI
我是否正确初始化了getter和setter方法?
例1:
import javax.swing.*;
class Example1 {
private JTextField Name;
public Example1(){
Name = null;
}
public Example1(JTextField n){
Name = n;
}
public void setName(JTextField Name) {
this.Name = Name;
}
public JTextField getName() {
return Name;
}
}
例2:
import javax.swing.*;
import java.awt.event.*;
public class Example2
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
private JTextField Name = new JTextField();
private JButton Button = new JButton("Print");
public Example2(){
panel.setLayout(null);
Name.setBounds(140, 62, 124, 20);
Button.setBounds(320, 62, 133, 20);
panel.add(Name);
panel.add(Button);
frame.add(panel);
frame.setSize(470,310);
frame.setVisible(true);
Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
add(Name);
}
});
}
public static void add(JTextField Name){
Example1 x = new Example1();
x.setName(Name);
JTextField a = x.getName();
System.out.println(a);
}
public static void main(String [] args){
Example2 print = new Example2();
}
}
答案 0 :(得分:1)
您不希望打印要通过文本字段访问字符串保留的元素本身。这不是错误。它只是为JTextField调用toString()方法。
使用textfield.getText()
访问Textfield的值。在Example2中,这将是:
public static void add(JTextField Name){
Example1 x = new Example1();
x.setName(Name);
JTextField a = x.getName();
System.out.println(a.getText());
}
希望这有帮助。
答案 1 :(得分:1)
您所看到的不是错误。这是打印没有定义toString()
方法的对象的结果。
JTextField a = x.getName();
System.out.println(a);
将对象传递给System.out.println()
时,会调用对象toString()
。由于JTextField没有toString()
,因此调用标准Object.toString()
方法。
更好的方法是:
System.out.println(a.getText());