热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Swing组件及其用法,图标接口的定义和创建方法

本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。

  swing组件及其用法,swing组件定义在

  4.4图标接口

  图标接口用来将图标与各种组件相关联。一个图标可以是简单的绘画或者是使用图标类由磁盘所载入的GIF格式格式图像。这个接口包含描述尺寸的两个属性以及一个用来绘制图标的方法。

  公共界面图标{

  //属性

  public int getIconHeight();

  public int geticonvwidth();

  //其他方法

  公共void paintIcon(组件c,图形g,int x,int y);

  }

  4.4.1 创建图标

  图标的创建非常简单,只需要简单的实现接口。我们所需要做的就是指定图标的尺寸以及要绘制的内容。列表4-3演示了一个图标的实现。这个图标是一个菱形图标,其尺寸,颜色以及填充状态都是可以配置的。

  包swingstudy.ch04

  导入Java。awt。颜色;

  导入Java。awt。组件;

  导入Java。awt。图形;

  导入Java。awt。多边形;

  导入javax。挥棒。图标;

  公共类钻石形实现图标{

  私彩色彩;

  选择了私有布尔值;

  私有int宽度;

  私有int高度;

  私有多边形多边形;

  private static final int DEFAULT _ WIDTH=10;

  private static final int DEFAULT _ HEIGHT=10;

  公共钻石(颜色颜色){

  this(color,true,DEFAULT_WIDTH,DEFAULT _ HEIGHT);

  公共菱形图标(颜色颜色,布尔选择){

  这(颜色,选定,默认_宽度,默认_高度);

  public DiamondIcon(Color color,boolean selected,int width,int height) {

  this.color=color

  this.selected=已选择

  this.width=宽度;

  this.height=高度;

  初始化多边形();

  私有void initPolygon() {

  多边形=新多边形();

  int半宽度=宽度/2;

  int half height=height/2;

  polygon.addPoint(0,半高);

  polygon.addPoint(半宽,0);

  polygon.addPoint(宽度,半高);

  polygon.addPoint(半宽,高度);

  @覆盖

  public int getIconHeight() {

  //TODO自动生成的方法存根

  返回高度;

  @覆盖

  public int geticonvwidth(){

  //TODO自动生成的方法存根

  返回宽度;

  @覆盖

  public void paintIcon(Component c,Graphics g,int x,int y) {

  //TODO自动生成的方法存根

  g.setColor(颜色);

  g.translate(x,y);

  如果(选中){

  g .填充多边形(多边形);

  否则{

  g .绘制多边形(多边形);

  g.translate(-x,-y);

  }

  4.4.2 使用图标

  一旦我们有了图标的实现,使用图标就如何查看一个组件具有相应的属性一样简单。例如,下面的代码创建了一个具有图标的标签:

  图标图标=新的钻石图标(颜色。红色,真实,25,25);

  JLabel label=new JLabel(icon);

  图4-10显这个标签的运行结果。

  4.4.3图像图标类

  图标类提供了由AdvancedWasteTreatmentofwater高次废水处理图像对象创建图标的图标接口实现,图像对象可以来自内存(字节[]),来自磁盘(文件名)或是来自网络(网址).与普通的图像对象不同,图像图标的载入是当图标被创建时立即启动的,尽管当使用时他也许还没有完全载入。另外,与图像对象不同,图像图标对象是可序列化的,所以他们可以很容易为JavaBean组件所使用。

  创建图标

  有九个构造函数可以用于创建图像图标:

  公共图像图标()

  icon icon=新图像icon();

  图标。setimage(anImage);

  公共图像图标(图像图像)

  icon icon=新图像图标(anImage);

  公共图像图标(字符串文件名)

  图标图标=新图像图标(文件名);

  公共图像图标(网址位置)

  图标图标=新图像图标(网址);

  公共图像图标(字节图像数据[])

  icon icon=新图像图标(aByteArray);

  公共图像图标(图像图像,字符串描述)

  Icon icon=new ImageIcon(anImage, Duke );

  公共图像图标(字符串文件名,字符串描述)

  Icon Icon=新图像icon(文件名,文件名);公共图像图标(网址位置,字符串描述)

  Icon icon=新图像Icon(url,位置。getfile());

  公共图像图标(网址位置,字符串描述)

  Icon icon=新图像Icon(url,位置。getfile());

  公共图像图标(字节图像数据[],字符串描述)

  icon icon=新图像图标(aByteArray, Duke );

  无参数的构造函数创建一个未初始化的版本。其余的八个构造函数提供了由图像,字节数组,文件名字串(字符串)或是URL,带有或是不带有描述来创建图像图标(图像图标)的功能。

  使用图像图标(图像图标)

  使用图像图标(图像图标)就如同使用图示一样简单:仅需要创建图像图标(图像图标)并将其组件相关联。

  图标=新建图像图标(‘警告。gif’);

  JLabel标签3=新建JLabel(Warning ,icon,JLabel).中心)

  图像图标(图像图标)属性

  表10月四日显示了图像图标(图像图标)的六个属性。图标的高与宽是实际的图像(图片)对象的高与宽。imageLoadStatus属性表示由隐藏媒体跟踪器载入图像图标(图像图标)的结果,或者是媒体跟踪者。中止,媒体跟踪者。错误,媒体追踪器。完成任务。

  图像图标(图像图标)属性

  有时使用图像图标(图像图标)来载入一个图像(图片),然后由图像(图片)对象获取图示是十分有用的。

  图像图标图像图标=新映像图标(-我.);

  图像图像=图像图标。getimage();

  使用图像图标(图像图标)对象时有一个主要问题:使用图标的图像与类文件都是由恰恰相反文件载入时,他们不能工作,除非我们为恰恰相反中的文件指定了完全的URL(网址).我们不能仅仅指定文件名为一个字串(字符串)并使得图像图标(图像图标)查找这个文件。我们必须首先手动获取图像数据,然后将这些数据传递给图像图标(图像图标)构造函数。

  为了解决在恰恰相反文件外部载入图像,列表四比四显示了一个图像加载器(映像加载程序)类,这个类提供了一个公共静态图像getimage(类相对类,字符串文件名)方法。我们同时指定图像文件相对的基类以及图像文件的名字。然后我们只需要将返回的图像(图片)对象传递给图像图标(图像图标)的构造函数。

  摇摆研究。ch 04软件包:

  导入java.awt.Image:

  导入java.awt.Toolkit:

  导入java。io。bufferedinputstream:

  导入java.io.ByteArrayOutputStream:

  导入java。超正析象管异常:

  导入java.io.InputStream:

  公共类图像加载器

  私有图像加载程序()

  公共静态图像getimage(类相对类,字符串文件名)}

  图像returnValue=null:

  输入流是=相对类。getresourcestream(文件名):

  如果(是!=null)>

  缓冲区数据流至=新缓冲区edinpertstream(是);

  bytearray输出流baos=new bytearray输出流();

  尝试[

  内部通道

  while ((ch=bis.read())!===1)}

  宝钢。书写(ch);

  返回值=工具包。getdefaulttoolkit().创建图像(baos。托比数组());

  catch(io异常e)}

  系统。呃。println(加载时出错:“文件名”;

  返回值(返回值):

  }

  下面的代码显示如何使用这个帮助类:

  图像警告图像=图像加载器。getimage(标签jarsample。类,“警告。gif”);

  警告图示=新影像图示(警告影像):

  JLabel标签2=新建JLabel(警告图标);

  灰色滤镜类

  另一个值得一提的类就是格莱菲过滤器类。许多摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆摇摆组件依赖这个类来创建一个禁止的图像(图片)版本用作图标。组件自动使用这个类,但是有时我们需要使用阿瓦特的图像过滤器(图像过滤器)类实现灰度平衡。我们可以通过调用类的一个方法将一个图像(图片)由普通形式转换为灰度形式-公共静态图像可编辑图像。

  正常映像=-我.

  灰色图像图像=格雷菲尔特。createdisabledimage(普通图像)

  现在我们可以使用一个灰色的图像作为组件的图标:

  图标警告图标=新建图像图标(灰度图像);

  JLabel警告Label=新jlabel(警告图标);



推荐阅读
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 在软件开发过程中,MD5加密是一种常见的数据保护手段。本文将详细介绍如何在C#中使用两种不同的方式来实现MD5加密:字符串加密和流加密。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 深入解析Java多线程与并发库的应用:空中网实习生面试题详解
    本文详细探讨了Java多线程与并发库的高级应用,结合空中网在挑选实习生时的面试题目,深入分析了相关技术要点和实现细节。文章通过具体的代码示例展示了如何使用Semaphore和SynchronousQueue来管理线程同步和任务调度。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 本文将详细探讨Linux pinctrl子系统的各个关键数据结构,帮助读者深入了解其内部机制。通过分析这些数据结构及其相互关系,我们将进一步理解pinctrl子系统的工作原理和设计思路。 ... [详细]
  • 在Oracle数据库中,使用Dbms_Output.Put_Line进行输出调试时,若单行字符超过255个,则会遇到ORA-20000错误。本文介绍了一种有效的方法来处理这种情况,通过创建自定义包和视图,实现对长字符串的分割和正确输出。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
author-avatar
秦乐0_707
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有