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()Textfield の値にアクセスするために使用します。Example2 では、次のようになります。

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 に答える