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



推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • ***byte(字节)根据长度转成kb(千字节)和mb(兆字节)**parambytes*return*publicstaticStringbytes2kb(longbytes){ ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
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社区 版权所有