中琅软件教程网

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

java自定义颜色选择器

[日期:2013-12-06] 作者: 来源: [字体: ]

5.4 颜色选择器

5.41源程序

5.4.1.1    JListDemo.Java

import java.awt.*;

import javax.swing.*;

import javax.swing.event.*;

 

//彩色列表框示例

public class JListDemo extends JFrame {

    Container container; // 容器

    JTextField selectedText; // 文本域,反映选择的颜色值

    JList list; // 列表框

    JPanel selectedColor; // Panel,以选择的颜色为背景绘制

 

    public JListDemo() { // 构造函数

      container = getContentPane(); // 得到容器

      container.setLayout(new BorderLayout()); // 设置布局管理器,不是必须的,Container默认为BorderLayout

      Color[] colors = { Color.orange, Color.pink, Color.red, Color.black,

              Color.blue, Color.cyan, Color.green, Color.lightGray }; // 列表框内容

      list = new JList(colors);

      JScrollPane scrollPane = new JScrollPane(list); // 以list初始化滚动窗格

      selectedText = new JTextField(20);

      selectedColor = new JPanel();

      selectedColor.setPreferredSize(new Dimension(20, 20)); // 设置panel的首选尺寸

      container.add(selectedText, BorderLayout.NORTH); // 增加组件到容器上

      container.add(scrollPane, BorderLayout.CENTER);

      container.add(selectedColor, BorderLayout.SOUTH);

      list.setCellRenderer(new ColorRenderer()); // 设置Renderer

      list.addListSelectionListener( // 事件处理

              new ListSelectionListener() {

                  public void valueChanged(ListSelectionEvent event) { // 选择值有改变

                    Color c = (Color) list.getSelectedValue(); // 得到选择的颜色

                    selectedText.setText("选择颜色:" + " R=" + c.getRed()

                            + " G =" + c.getGreen() + " B=" + c.getBlue()); // 设置文本域文本

                    selectedColor.setBackground(c); // 设置panel的颜色

                  }

              });

      setSize(300, 200); // 设置窗口尺寸

      setVisible(true); // 设置窗口可视

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

    }

 

    public static void main(String[] args) {

      new JListDemo();

    }

}

5.4.1.2    ColorRender.java

import java.awt.*;

import javax.swing.*;

import javax.swing.border.*;

 

//彩色列表框的Renderer,须实现接口ListCellRenderer

public class ColorRenderer extends JLabel implements ListCellRenderer {

    // 实现接口中的getListCellRendererComponent方法

    public Component getListCellRendererComponent(JList list, Object obj,

          int row, boolean sel, boolean hasFocus) {

      if (hasFocus || sel) { // 设置选中时的边界

          setBorder(new MatteBorder(2, 10, 2, 10, list

                  .getSelectionBackground()));

      } else { // 设置未选中时的边界

          setBorder(new MatteBorder(2, 10, 2, 10, list.getBackground()));

      }

      Color c = (Color) obj; // 得到该行的颜色值

      setForeground(c); // 设置颜色

      setText(c.toString()); // 设置文本

      return this;

    }

}

5.4.1.3    运行结果:

 

5.4.2源程序揭秘

5.4.2.1 源程序介绍

    该程序主要介绍了如何创建一个彩色列表框。通过这个例子,读者可以知道彩色列表框是如何使用的以及对渲染器的使用会有一定的了解。

5.4.2.2 源程序变量解析:

        container: 容器。

    selectedText: 文本域,反映选择的颜色值。

    list: 列表框。

        selectedColor: Panel,以选择的颜色为背景绘制。

5.4.2.3 源程序函数解析:

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

    JListDemo()构造函数:实例化变量,构造窗口,添加事件处理。

    getListCellRendererComponent(JList list,Object obj,int row,Boolean sel,boolean hasFocus)函数:实现接口中的getListCellRendererComponent()方法。

5.4.2.4    程序段解析:

    Color c = (Color) list.getSelectedValue();                    selectedText.setText("选择颜色:" + " R=" + c.getRed()

                            + " G =" + c.getGreen() + " B=" + c.getBlue());

    selectedColor.setBackground(c);

    每种颜色都可以用红、绿、蓝三种颜色组成的,红、绿、蓝这三种颜色所占值比例的大小决定了其所表现的颜色,所以Color实例会有getRed()、getGreen()、getBlue()这三个方法。

关键词:自定义  颜色  选择器 

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