如何在GUI中应用私有变量的Getter / Setter方法?

时间:2013-03-08 17:08:02

标签: java swing jtextfield setter getter

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



}

2 个答案:

答案 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());