当前位置: 技术问答>java相关
初学者:为什么单独声明类建立object?
来源: 互联网 发布时间:2015-06-02
本文导语: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class JComboBoxTest extends JFrame { public static void main(String args[]) { JComboBoxTest test=new JComboBoxTest(); ...
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class JComboBoxTest extends JFrame {
public static void main(String args[]) {
JComboBoxTest test=new JComboBoxTest();
test.setSize(300,200);
test.setVisible(true);
}
public JComboBoxTest() {
/////=========
TestComboBox jcb=new TestComboBox(this);
///// 这里为什么要调用单独声明的一个类来建立一个JComboxBox,而不直接用JComboBox类的构造函数:JComboBox(),JComboBox(Object[] items),JComboBox(Vector items) 来直接建立一个JComboBox ?? 我是个初学者,希望大家能够给我一点比较详细的解析说明,谢谢!
另外,像这里这种形式的声明,在其他的地方也见到过,如JFileChooser类也是用单独的类来建立一个JFileChooser而没有用他本身的函数,类如如此的问题,请各位高手赐教!!
/////===================
jcb.setEditable(true);
getContentPane().add(jcb,BorderLayout.NORTH);
jcb.addItem(new String("www.sina.com"));
jcb.addItem(new String("www.163.com"));
}
}
class TestComboBox extends JComboBox {
private JComboBoxTest parent;
public TestComboBox(JComboBoxTest p ) {
parent=p;
}
public void actionPerformed(ActionEvent e ) {
hidePopup();
String text=e.getActionCommand();
removeItem(text);
insertItemAt(text,0);
if (getItemCount() > 5)
removeItemAt(5);
setSelectedIndex(0);
}
public void contentChanged(ListDataEvent e) {
parent.setTitle((String)getSelectedItem());
}
public void intervalAdded(ListDataEvent e) {
}
public void intervalRemoved(ListDataEvent e) {
}
}
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class JComboBoxTest extends JFrame {
public static void main(String args[]) {
JComboBoxTest test=new JComboBoxTest();
test.setSize(300,200);
test.setVisible(true);
}
public JComboBoxTest() {
/////=========
TestComboBox jcb=new TestComboBox(this);
///// 这里为什么要调用单独声明的一个类来建立一个JComboxBox,而不直接用JComboBox类的构造函数:JComboBox(),JComboBox(Object[] items),JComboBox(Vector items) 来直接建立一个JComboBox ?? 我是个初学者,希望大家能够给我一点比较详细的解析说明,谢谢!
另外,像这里这种形式的声明,在其他的地方也见到过,如JFileChooser类也是用单独的类来建立一个JFileChooser而没有用他本身的函数,类如如此的问题,请各位高手赐教!!
/////===================
jcb.setEditable(true);
getContentPane().add(jcb,BorderLayout.NORTH);
jcb.addItem(new String("www.sina.com"));
jcb.addItem(new String("www.163.com"));
}
}
class TestComboBox extends JComboBox {
private JComboBoxTest parent;
public TestComboBox(JComboBoxTest p ) {
parent=p;
}
public void actionPerformed(ActionEvent e ) {
hidePopup();
String text=e.getActionCommand();
removeItem(text);
insertItemAt(text,0);
if (getItemCount() > 5)
removeItemAt(5);
setSelectedIndex(0);
}
public void contentChanged(ListDataEvent e) {
parent.setTitle((String)getSelectedItem());
}
public void intervalAdded(ListDataEvent e) {
}
public void intervalRemoved(ListDataEvent e) {
}
}
|
这样写的目的主要是重载JComboBox 的方法.如TestComboBox 中就重载了
actionPerformed(),contentChanged等方法.
如果直接用JComboBox类的构造函数,就只能用JComboBox的缺省行为.
这种例子在改java swing的控件view中尤为常见,缺省的样子不行,就必须重载方法.
actionPerformed(),contentChanged等方法.
如果直接用JComboBox类的构造函数,就只能用JComboBox的缺省行为.
这种例子在改java swing的控件view中尤为常见,缺省的样子不行,就必须重载方法.
|
你的这个问题太奇怪了,
某些人认为怎样写比较清楚,对代码维护提供方便。
向你这样能作也可以,
其实没有太大区别。
任选一个吧。
某些人认为怎样写比较清楚,对代码维护提供方便。
向你这样能作也可以,
其实没有太大区别。
任选一个吧。
|
一个常用的手段而已
《设计模式》里这样的手法很多
就是好像是利用一个接口,把自己不需要或者需要修改的方法屏蔽掉
《设计模式》里这样的手法很多
就是好像是利用一个接口,把自己不需要或者需要修改的方法屏蔽掉