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(); } }
相关文章推荐
- JAVA中对同一问题分别使用内部类与匿名内部类实现
- JAVA中对同一问题分别使用内部类与匿名内部类实现
- java在线聊天项目0.3版本 制作客户端窗体,实现发送按钮和回车发送信息功能,使用ActionListener监听事件中actionPerformed方法(用内部类和匿名内部类两种方法)
- JAVA中内部类和匿名内部类的区别,分别在什么时候使用它们?
- 使用Tomcat实现Java连接池(解决main中不能够调用问题)
- 着色问题的代码实现(java版)使用回溯法和贪心思想
- 问题1:java中没有实现这种“byte a = 0xB2 --> String b = “B2””转换的简单实现需要自己实现。 答:自己编写的转换函数,思路将byte的高低4位分开,分别转换为对应的字符然后合成返回的字符串。 java 代码 1.
- 牛客网Java刷题知识点之什么是匿名内部类、匿名内部类的使用原则、匿名内部类初始化、匿名内部类使用的形参为何要为final 和 案例
- TopN问题(分别使用Hadoop和Spark实现)
- 【我的Java笔记】多线程_使用匿名内部类的方式实现多线程
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
- Android相册效果(使用C#和Java分别实现)
- Android仿微信菜单(Menu)(使用C#和Java分别实现)
- 最安全的单例模式--java使用内部类实现单例模式
- 链表的Java实现(使用内部类作为指针的引用)
- 用内部类实现java多重实现中的方法同名问题
- Java的内部类和匿名内部类的使用规则
- 用内部类实现java多重实现中的方法同名问题
- 从头认识java-18.2 基本的线程机制(6)-使用构造器或者内部类来实现多线程的编码变体
- 使用Spring实现异常统一处理【三】--java.lang.IllegalStateException: STREAM问题的解决