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

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(); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值