当前位置:首页 > JAVA中对同一问题分别使用内部类与匿名内部类实现

JAVA中对同一问题分别使用内部类与匿名内部类实现

点击次数:2278  更新日期:2013-03-16
JAVA中对同一问题分别使用内部类与匿名内部类实现,基于轻量级组件Swing中JComboBox组件来举例说明,希望能够有助于深入理解内部类与匿名内部类的区别以及其使用。


packagecom.han;
importjavax.swing.*;

importjava.awt.*;
importjava.awt.event.*;

/**
*设计了一个Swing窗体,其中包括了JComboBox组件(下拉列表框),
*在下面的代码中运用了内部类的手段。
*@authorHAN
*
*/
@SuppressWarnings("serial")
publicclassSwingJComboBoxextendsJFrame{

publicSwingJComboBox(){
setLayout(null);
setBounds(130,30,300,200);
Containerc=getContentPane();
finalMyComboBoxobj1=newMyComboBox();
@SuppressWarnings({"unchecked","rawtypes"})
JComboBoxjc=newJComboBox(obj1);
jc.setBounds(0,0,290,20);
//System.out.println(obj1.getElementAt(0));
jc.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
System.out.println(obj1.getSelectedItem());
}
});
JCheckBoxjck1=newJCheckBox("男");
JCheckBoxjck2=newJCheckBox("女",true);
jck1.setBounds(100,80,40,20);
jck2.setBounds(140,80,40,20);
JButtonjb1=newJButton("确定");
JButtonjb2=newJButton("取消");
jb1.setBounds(80,130,60,30);
jb2.setBounds(140,130,60,30);
c.add(jc);
c.add(jck1);
c.add(jck2);
c.add(jb1);
c.add(jb2);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//veryimportant!!
}

@SuppressWarnings("rawtypes")
classMyComboBoxextendsAbstractListModelimplementsComboBoxModel{
Stringselecteditem="军人证";
String[]test={"身份证","军人证","学生证"};
publicvoidsetSelectedItem(Objectitem){
selecteditem=(String)item;
}
publicObjectgetSelectedItem(){
returnselecteditem;
}
@Override
publicintgetSize(){
//TODOAuto-generatedmethodstub
returntest.length;
}
@Override
publicObjectgetElementAt(intindex){
//TODOAuto-generatedmethodstub
returntest[index];
}

}

publicstaticvoidmain(String[]args){
newSwingJComboBox();

}
}