第一次接触OPP。。
有如下一疑惑:比如我现在要写一个GUI程序。
窗口中有一个按钮。书上说:“在类中,变量一般是描述属性,方法是描述动作。”那么,我是应该这样:import java.swing.*;
public testFrame extends JFrame {
testFrame() {
setTitle("frame");
setSize(frameWidth,frameHeight);
//some codes... JPanel panel = new JPanel();
panel.add(new JButton("Button"));
add(panel);
}
private final int frameWidth = 400;
private final int frameHeight = 300;
}
还是应该import java.swing.*;
public testFrame extends JFrame {
testFrame() {
setTitle("frame");
setSize(frameWidth,frameHeight);
//some codes... panel.add(button);
add(panel);
}
private JPanel panel = new JPanel();
private JButton button = new JButton("button");
private final int frameWidth = 400;
private final int frameHeight = 300;
}
也就是说。。我知道,框架(Frame)的宽度和高度是框架的属性,所以定义成实例变量,
但是,框架中包含的这些组件(Component),究竟属于不属于框架的属性呢?
把按钮(Button)定义成实例变量好还是在构造方法中用局部变量定义比较好呢?
两者会各产生什么影响?求解望各位帮忙。。
有如下一疑惑:比如我现在要写一个GUI程序。
窗口中有一个按钮。书上说:“在类中,变量一般是描述属性,方法是描述动作。”那么,我是应该这样:import java.swing.*;
public testFrame extends JFrame {
testFrame() {
setTitle("frame");
setSize(frameWidth,frameHeight);
//some codes... JPanel panel = new JPanel();
panel.add(new JButton("Button"));
add(panel);
}
private final int frameWidth = 400;
private final int frameHeight = 300;
}
还是应该import java.swing.*;
public testFrame extends JFrame {
testFrame() {
setTitle("frame");
setSize(frameWidth,frameHeight);
//some codes... panel.add(button);
add(panel);
}
private JPanel panel = new JPanel();
private JButton button = new JButton("button");
private final int frameWidth = 400;
private final int frameHeight = 300;
}
也就是说。。我知道,框架(Frame)的宽度和高度是框架的属性,所以定义成实例变量,
但是,框架中包含的这些组件(Component),究竟属于不属于框架的属性呢?
把按钮(Button)定义成实例变量好还是在构造方法中用局部变量定义比较好呢?
两者会各产生什么影响?求解望各位帮忙。。
没多大影响,不过理论上,“实例变量”的效率要稍微高一些
所以构造函数一般用来赋值对象的初值。把这问题理解好了,你应该就知道该怎么做了吧
理解错误,框架的高度和宽度其实是Component类里面的属性当你调用setSize的方法的时候修改的就是这两个属性值
但是,框架中包含的这些组件(Component),究竟属于不属于框架的属性呢?如果你定义这些组件为实例变量的话那么他们就是,否则不是
要用普通类的眼光去看待swing和awt,他们也只是普通的java类把按钮(Button)定义成实例变量好还是在构造方法中用局部变量定义比较好呢?
看需求,如果你下面有其他的方法需要引用这些组件对象的话,就定义为实例变量,否则还是局部变量吧两者会各产生什么影响?
局部变量的生命周期比实例变量短,而且作用范围小。
例如增加事件监听,你需要判断事件源是哪个组件,这个时候你如果把该组件定义为实例变量比较合适
当然你也可以不通过实例变量,而通过其他方法获得该组件对象