Java 我们可以通过JTextField初始化实例变量吗?
我们可以通过JTextField初始化实例变量吗?例如,lets x是一个实例变量,我想在单击jbutton时初始化它的值。我想在另一种方法中使用这个x。那么我们可以更新xJava 我们可以通过JTextField初始化实例变量吗?,java,swing,variables,jtextfield,Java,Swing,Variables,Jtextfield,我们可以通过JTextField初始化实例变量吗?例如,lets x是一个实例变量,我想在单击jbutton时初始化它的值。我想在另一种方法中使用这个x。那么我们可以更新x public class CT extends JFrame{ JTextField txtf = new JTextField(20); JButton btn = new JButton("Click"); JLabel lbl = new JLabel(); int x; CT(){ setSize(600
public class CT extends JFrame{
JTextField txtf = new JTextField(20);
JButton btn = new JButton("Click");
JLabel lbl = new JLabel();
int x;
CT(){
setSize(600, 400);
setVisible(true);
setLayout(new FlowLayout());
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int a =Integer.parseInt(txtf.getText());
display(a);
x=a;
}
});
add(btn);
add(txtf);
add(lbl);
}
public void display(int s){
System.out.println(s);
System.out.println(x); //this display zero?? can we update it?
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new CT();
}
}
声明
x=a;
display(a);
应该在语句之前执行
x=a;
display(a);
在“初始化”x之前,您正在打印a和x的值。它显示
0
的原因是您调用了
display(a);
x=a;
而不是
x=a;
display(a);
但是,无论哪种情况,这都不是初始化。这只是一个简单的任务。当CT
的构造函数完成时,字段x
没有设置为任何值(好吧,它是0,默认值)
需要注意的是,actionPerformed()
中的代码并不是在构造函数中真正调用的,而是在构造函数中创建的。因此,其中的任何分配都不被视为“初始化”
初始化和赋值之间有什么区别?如果x
是final
,那么可以在其中输入值的唯一位置是
- 初始化器。例如
final int x = 15;
- 初始化块。例如
final int x; { x = 15; }
- 在构造函数内部
final x
的所有其他赋值都将失败
由于您没有将x
声明为final
,因此您可能没有注意到初始化和赋值之间的区别,但代码中的内容肯定是赋值