【问题标题】:GUI - JFrame: declaring variablesGUI - JFrame:声明变量
【发布时间】:2014-01-27 21:11:07
【问题描述】:

在以下代码中,我创建了 3 个变量:

public class tuna extends JFrame {

    //Creating 3 text fields
    private JTextField item1;
    private JTextField item2;
    private JTextField item3;

我不明白为什么我需要执行以下操作:

item1=new JTextField(10);
        add(item1);

为什么要再次声明 item1 为 jtextfield? 是否只是为了创建它的大小和文本等?

【问题讨论】:

    标签: java swing jframe variable-declaration variable-initialization


    【解决方案1】:

    您不会再次声明它。您正在用第二段代码初始化它——大不同。

    这与任何其他参考变量没有什么不同。即,

    public class MyFoo {
        private String fooString;  // (A)
    
        public MyFoo() {
          fooString = "hello world";  // (B)
        }
    

    你也可以在同一行声明和初始化它。

    public class MyFoo {
        private String fooString = "hello world";
        private JTextField textField = new JTextField(10);
    
        public MyFoo() {
          // now can use both variables
        }
    

    因此,您的代码中的第一条语句(上面我的字符串示例中的语句 (A))创建了 JTextField 类型的变量,但是在创建时它们会自动填充默认值,这些默认值用于引用变量(除了 ints 等原语之外的所有内容, 双打, 浮动,...) 是null。因此,您有引用 null 或没有引用的变量,在使用它们之前,您 必须 为它们分配一个有效的引用或对象,这就是您的第二段代码所做的(我的 String 中的语句 (B)上面的例子)。

    你会想要运行,而不是走到离你最近的 Java 教程或教科书的介绍处,然后阅读变量声明和初始化,因为在尝试创建之前你真的需要理解这个非常核心的基本概念Swing GUI 或任何与此相关的 Java 程序。就是这么重要。

    【讨论】:

      【解决方案2】:

      声明和初始化是两件不同的事情。你可以像这样一次性声明和初始化它们:

      private JTextField item1 = new JTextField(10);
      private JTextField item2 = new JTextField(10);
      private JTextField item3 = new JTextField(10);
      add(item1);
      add(item2);
      add(item3);
      

      【讨论】:

        【解决方案3】:

        在 Java 中,并且在一般编程中非常确定,存在“引用”和对象。

        创建对象时,通常会创建对它的引用。稍后您可以使用该引用访问该对象。

        obj 是类型为 Object 的对您创建的新对象的引用。

        你不能简单地写Object obj;,因为那只是声明一个引用。您必须将一个对象“附加”到该引用,然后才能使用它,因为它指向某个地方。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-14
          • 2014-09-04
          • 2012-06-15
          • 2014-11-09
          相关资源
          最近更新 更多