中琅软件教程网

首页搜索登录
首页业界网页平面多媒体程序数据库办公工具服务器系统网络安全站长认证壁纸
加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索

Java中自定义控件

[日期:2013-11-30] 作者: 来源: [字体: ]

5.1开发自己的控件(自定义控件)

5.1.1源程序

5.1.1.1IconComboBoxDemo.Java

package GUI;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

//颜色选择下拉框演示

public class IconComboBoxDemo extends JFrame{

    JLabel iconLabel=null;  //用来响应列表框选择的变化

    JComboBox iconComboBox=null;  //定制的选择下拉框

  public IconComboBoxDemo(){

      //定义Object二维数组,用于初始化下拉框,参数依次为图标,显示文本,提示文本

    Object[][] obj={

      {new ImageIcon("1.gif"),"旅游","提供旅游的最新信息"},

      {new ImageIcon("2.gif"),"音乐","提供最新的音乐资讯,古典的、流行的..."},

      {new ImageIcon("3.gif"),"聊天","与朋友聊天"},

      {new ImageIcon("4.gif"),"影视","影视娱乐"},

      {new ImageIcon("5.gif"),"家居","家居世界"},

    };

 

    //初始化下拉框

      iconComboBox = new JComboBox();

      iconComboBox.setMaximumRowCount(3);  //设置最大可视行数

      iconComboBox.setRenderer(new IconRenderer()); //设置单元绘制器

      for (int i=0;i<obj.length;i++){  //增加数组中的所有元素到下拉框中

        iconComboBox.addItem(obj[i]);

      }

 

      //初始化iconLabel信息

      iconLabel = new JLabel();

      //下拉框事件处理,用匿名类实现

      iconComboBox.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent evt){  //处理事件

          Object[] obj = (Object[])iconComboBox.getSelectedItem();  //得到选择的内容,此处为一维数组

          iconLabel.setIcon((Icon)obj[0]);  //设置iconLabel的图标

          iconLabel.setText(obj[1].toString());  //设置iconLabel的文本

      }

      });

 

      //增加组件到主窗体上

      this.getContentPane().setLayout(new BorderLayout());  //设置布局管理器

      this.getContentPane().add(iconComboBox,BorderLayout.NORTH); //在上方增加下拉框

      this.getContentPane().add(iconLabel,BorderLayout.CENTER);  //在中间增加iconLabel,用于响应选择的变化

      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口时退出程序

      this.setSize(350,260);  //设置窗口尺寸

      this.setVisible(true);  //显示窗口

  }

 

  public static void main(String[] args){

      new IconComboBoxDemo();

  }

}

5.1.1.2 IconRenderer.java

package GUI;

 

import java.awt.*;

import javax.swing.*;

import javax.swing.border.LineBorder;

 

//带图标下拉框的单元绘制器,从JLabel类扩展,实现ListCellRenderer接口

public class IconRenderer extends JLabel implements ListCellRenderer{

  public Component getListCellRendererComponent(JList list, Object obj, int row, boolean sel, boolean hasFocus) {

      Object[] cell = (Object[])obj;  //得到行的参数

      setIcon((Icon)cell[0]);  //设置图标

      setText(cell[1].toString()); //设置文本

      setToolTipText(cell[2].toString());  //设置提示文本

      setBorder(new LineBorder(Color.WHITE)); //设置边界

      if (sel){

        setForeground(Color.MAGENTA);  //如果选中了,设置文本颜色为品红色

      }

      else{

        setForeground(list.getForeground()); //如果未选中,设置文本颜色为默认色

      }

      return this;

  }

}

5.1.1.3    源程序运行结果:

 

 

5.1.2源程序揭秘

5.1.2.1 源程序介绍

该程序主要介绍怎样创建自己的控件,通过IconComboBoxDemo.java文件和IconRenderer.java文件设计出好看的下拉框。其中也让大家体会控件的建立和图片的加入。主要是让大家先感受一下怎样建立框架以及怎样添加组件、组件上的事件处理。

5.1.2.2 源程序变量解析:

iconLabel:用来响应列表选择的变化。

iconComboBox:定制的选择下拉框。

obj:Object二维数组的数组名,用来加入图片,初始化下拉框以及显示文本和提示文本。

5.1.2.3 源程序函数解析:

main()函数:程序运行的入口,起到引导程序的作用。

IconComboBoxDemo()构造函数:定义Object二维数组以及初始化下拉框。

actionPerformed()函数:组件事件处理函数。

getListCellRendererComponent()函数:创建带图标下拉框的单元绘制器。

5.1.2.4 程序段解析:

l  Object[][] obj={

        {new ImageIcon("1.gif"),"旅游","提供旅游的最新信息"},

        {new ImageIcon("2.gif"),"音乐","提供最新的音乐资讯,古典的、流行的..."},

        {new ImageIcon("3.gif"),"聊天","与朋友聊天"},

        {new ImageIcon("4.gif"),"影视","影视娱乐"},

        {new ImageIcon("5.gif"),"家居","家居世界"},

        };

      该段程序主要定义Object二维数组,用于初始化下拉框,参数依次为图标,显示文本,提示文本。

l  iconComboBox.addActionListener(new ActionListener(){

      public void actionPerformed(ActionEvent evt){  //处理事件

        Object[] obj = (Object[])iconComboBox.getSelectedItem();  //得到选择的内容,此处为一维数组

        iconLabel.setIcon((Icon)obj[0]);  //设置iconLabel的图标

        iconLabel.setText(obj[1].toString());  //设置iconLabel的文本

      }

      }

    该段程序主要是对组件事件的处理,例如当鼠标点击下拉框时,下拉框就应该显示下拉菜单,当点击完下拉框后,下面应该显示选择的事件的动作。

关键词:控件  自定义 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
最新图文
本文评论   查看全部评论 (1)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 匿名 发表于 2016/12/24 19:42:31
http://www.blue1000.com/bkhtml/c149/2013-11/71400.htm 给小明的一封信作文 http://www.135995.com/details/zs2750.html 未来世界的想象作文 http://www.135995.com/details/zs2751.html