您的位置:首页 > 编程语言 > Java开发

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

2011-12-30 02:12 411 查看
JAVA中对同一问题分别使用内部类与匿名内部类实现,基于轻量级组件Swing中JComboBox组件来举例说明,希望能够有助于深入理解内部类与匿名内部类的区别以及其使用。

package com.han;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

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

public SwingJComboBox(){
setLayout(null);
setBounds(130,30,300,200);
Container c=getContentPane();
final MyComboBox obj1=new MyComboBox();
@SuppressWarnings({ "unchecked", "rawtypes" })
JComboBox jc=new JComboBox(obj1);
jc.setBounds(0,0,290,20);
//		System.out.println(obj1.getElementAt(0));
jc.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
System.out.println(obj1.getSelectedItem());
}
});
JCheckBox jck1=new JCheckBox("男");
JCheckBox jck2=new JCheckBox("女",true);
jck1.setBounds(100,80,40,20);
jck2.setBounds(140,80,40,20);
JButton jb1=new JButton("确定");
JButton jb2=new JButton("取消");
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); //very important !!
}

@SuppressWarnings("rawtypes")
class MyComboBox extends AbstractListModel implements ComboBoxModel {
String selecteditem="军人证";
String[] test={"身份证","军人证","学生证"};
public void setSelectedItem(Object item){
selecteditem=(String)item;
}
public Object getSelectedItem(){
return selecteditem;
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return test.length;
}
@Override
public Object getElementAt(int index) {
// TODO Auto-generated method stub
return test[index];
}

}

public static void main(String[] args){
new SwingJComboBox();

}
}


package com.han;
import javax.swing.*;
import javax.swing.event.ListDataListener;

import java.awt.*;
import java.awt.event.*;

/**
* 设计了一个Swing窗体,其中包括了JComboBox组件(下拉列表框),
* 在下面的代码中运用了匿名内部类的手段。
* @author HAN
*
*/
@SuppressWarnings("serial")
public class SwingJComboBox extends JFrame{
public static String selectedItem;
public SwingJComboBox(){
setLayout(null);
setBounds(130,30,300,200);
Container c=getContentPane();
//		final MyComboBox obj1=new MyComboBox();
@SuppressWarnings({ "unchecked", "rawtypes" })
JComboBox jc=new JComboBox(new ComboBoxModel(){
String selecteditem="军人证";
String[] test={"身份证","军人证","学生证"};
//			public void getItem(){
//				selectedItem=selecteditem;
//			}
@Override
public int getSize() {
// TODO Auto-generated method stub
return test.length;
}

@Override
public Object getElementAt(int index) {
// TODO Auto-generated method stub
return test[index];
}

@Override
public void setSelectedItem(Object anItem) {
// TODO Auto-generated method stub
selecteditem=(String) anItem;
}

@Override
public Object getSelectedItem() {
// TODO Auto-generated method stub
//				getItem();
selectedItem=selecteditem;
return selecteditem;
}

@Override
public void addListDataListener(ListDataListener l) {
// TODO Auto-generated method stub

}

@Override
public void removeListDataListener(ListDataListener l) {
// TODO Auto-generated method stub

}

});
jc.setBounds(0,0,290,20);
//		System.out.println(obj1.getElementAt(0));
jc.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
System.out.println(selectedItem);
}
});
JCheckBox jck1=new JCheckBox("男");
JCheckBox jck2=new JCheckBox("女",true);
jck1.setBounds(100,80,40,20);
jck2.setBounds(140,80,40,20);
JButton jb1=new JButton("确定");
JButton jb2=new JButton("取消");
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); //very important !!
}

public static void main(String[] args){
new SwingJComboBox();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐