【问题标题】: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;,因为那只是声明一个引用。您必须将一个对象“附加”到该引用,然后才能使用它,因为它指向某个地方。
希望对你有帮助