0

该程序的目的是从另一个类访问私有变量 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();
}



}
4

2 回答 2

1

您不想打印要访问文本字段保存的字符串的元素本身。这不是错误。它只是为 JTextField 调用 toString() 方法。

用于textfield.getText()访问文本字段的值。在示例 2 中,这将是:

public static void add(JTextField Name){
    Example1 x = new Example1();
    x.setName(Name);

    JTextField a = x.getName();
    System.out.println(a.getText());
}

希望这可以帮助。

于 2013-03-08T17:16:07.477 回答
1

您所看到的不是错误。这是打印没有toString()定义方法的对象的结果。

JTextField a = x.getName();
System.out.println(a);

当您将一个对象传递给System.out.println()然后该对象toString()被调用。由于没有toString()JTextField,所以Object.toString()调用标准方法。

更好的方法是:

System.out.println(a.getText());
于 2013-03-08T17:23:26.503 回答