加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

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

发布时间:2021-11-24 18:00:34 所属栏目:教程 来源:互联网
导读:Java中对同一问题分别使用内部类与匿名内部类实现,基于轻量级组件Swing中JComboBox组件来举例说明,希望能够有助于深入理解内部类与匿名内部类的区别以及其使用。 package com.han; import javax.swing.*; import java.awt.*; import java.awt.event.*; /**

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

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读