为什么我不能调用创建对象的公共方法?

Del*_*leD -1 java jtextfield

当我尝试运行此Java程序来创建JTextField时:

import java.awt.*; 
import javax.swing.*; 

public class TextField1 extends JFrame{
  private final int WIDTH = 320; 
  private final int HEIGHT = 250; 
  private FlowLayout flow = new FlowLayout(); 
  private JTextField myOutput = new JTextField();

  public TextField1() {
    super("My TextField Example");
    setSize(WIDTH, HEIGHT); 
    setLayout(flow);
    JTextField myOutput = new JTextField(20);
    add(myOutput);
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  }

  public void createGUI(){
    myOutput.setText("I am a text field showing output!");
    myOutput.setEditable(false);
  }

  public static void main(String[]args) {
 TextField1 myTextField = new TextField1(); 
 myTextField.createGUI();
 System.out.println(myTextField.myOutput.getText());
  }
}
Run Code Online (Sandbox Code Playgroud)

好像它没有注册createGUI()方法.你能解释一下这是为什么吗?

blu*_*gh2 5

在构造函数中,您正在创建一个名为的新变量myOutput,该变量与上面声明的实例变量不同.JTextField myOutput应该myOutput

编辑:

您声明一个方法局部变量myOutput并将其添加到您的框架中.createGUI()使用在类顶部声明的实例变量,因此它不会影响TextField帧中的.