热门标签 | 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(警告图标);



推荐阅读
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 解决Element UI中Select组件创建条目为空时报错的问题
    本文介绍如何在Element UI的Select组件中使用allow-create属性创建新条目,并处理创建条目为空时出现的错误。我们将详细说明filterable属性的必要性,以及default-first-option属性的作用。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • MySQL DateTime 类型数据处理及.0 尾数去除方法
    本文介绍如何在 MySQL 中处理 DateTime 类型的数据,并解决获取数据时出现的.0尾数问题。同时,探讨了不同场景下的解决方案,确保数据格式的一致性和准确性。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
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社区 版权所有