- 浏览: 916770 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- J2EE (9)
- Spring (11)
- Hibernate (11)
- Struts (5)
- opensource (19)
- Hadoop (28)
- 架构设计 (8)
- 企业应用 (10)
- SNMP (8)
- SSO (4)
- webservice (11)
- RPC (2)
- 编程语言 (0)
- Java (30)
- Javascript (5)
- NoSQL (11)
- 数据库 (0)
- oracle (8)
- MySQL (3)
- web (1)
- Android (2)
- Linux (15)
- 软件工具 (15)
- 项目构建 (11)
- 测试工具 (2)
- Exception (19)
- 杂谈 (4)
- Groovy (5)
- Nodejs (1)
- MacOSX (4)
最新评论
-
fighhin:
decode(BinaryBitmap,java.util.M ...
条形码/二维码之开源利器ZXing图文介绍 -
u013489005:
追问:楼主,请问有中文文档么?我的邮箱是frankgray@s ...
Java表达式计算引擎:Expr4J -
u013489005:
感谢博主 需要引入的包是import java.io.*;im ...
Java表达式计算引擎:Expr4J -
calosteward:
感谢楼主分享。。 Zxing 我听说过的。__________ ...
条形码/二维码之开源利器ZXing图文介绍 -
u013810758:
judasqiqi 写道感谢楼主!想请问楼主一下这个生成的图片 ...
Java实现二维码QRCode的编码和解码
blog迁移至 :http://www.micmiu.com
swing中Label添加下划线大致有下面三种实现方法:
- [一]、利用<HTML>标签实现
- [二]、利用Graphics 重写paint方法画出下划线
- [三]、完美实现下划线,支持Border设置和自定义Color
下面具体分析每种实现方式的优缺点:
[一]、利用<HTML>标签实现
优点:
- 原生态的Label,无需任何改造
- 支持自定义的Border的标签
缺点:
- 下划线的颜色和标签的颜色一致,无法单独自定义
代码示例:
package michael.swing.label; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.LineBorder; /** * @blog http://sjsky.iteye.com * @author Michael */ public class JLabelUnderLineHtml { /** * @param args */ public static void main(String[] args) { JFrame f = new JFrame("JLabe with Under Line"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(new Dimension(300, 200)); f.setLayout(new FlowLayout()); JLabel label1 = new JLabel("<html><u>Label下划线</u><html>"); f.add(label1); JLabel label2 = new JLabel("<html><u>Label下划线</u><html>"); label2.setForeground(Color.BLUE); f.add(label2); // 有Border的标签 JLabel label3 = new JLabel("<html><u>Label(Border)下划线</u><html>"); label3.setBorder(BorderFactory.createCompoundBorder(new LineBorder( Color.RED), BorderFactory.createEmptyBorder(8, 8, 8, 8))); f.add(label3); // f.pack(); f.setVisible(true); } }
效果图:
[二]、 利用Graphics 重写paint方法画出下划线
优点:
- 下划线的颜色可以单独自定义
缺点:
- 对于自定义的Border的标签支持不好
代码示例:
package michael.swing.label; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Rectangle; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.LineBorder; /** * @blog http://sjsky.iteye.com * @author Michael */ public class JLabelUnderLineSimple extends JLabel { private Color underLineColor; public JLabelUnderLineSimple() { this(""); } public JLabelUnderLineSimple(String text) { super(text); } /** * @return the underLineColor */ public Color getUnderLineColor() { return underLineColor; } /** * @param pUnderLineColor the underLineColor to set */ public void setUnderLineColor(Color pUnderLineColor) { underLineColor = pUnderLineColor; } public void paint(Graphics g) { Rectangle r; super.paint(g); r = g.getClipBounds(); if (null != underLineColor) { g.setColor(underLineColor); } // 画出下划线 g.drawLine(0, r.height - getFontMetrics(getFont()).getDescent(), getFontMetrics(getFont()).stringWidth(getText()), r.height - getFontMetrics(getFont()).getDescent()); } /** * @param args */ public static void main(String[] args) { JFrame f = new JFrame("JLabe with Under Line"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(new Dimension(300, 200)); f.setLayout(new FlowLayout()); JLabelUnderLineSimple label1 = new JLabelUnderLineSimple("Label下划线"); f.add(label1); JLabelUnderLineSimple label2 = new JLabelUnderLineSimple("Label下划线"); label2.setUnderLineColor(Color.BLUE); f.add(label2); // 有Border的标签 JLabelUnderLineSimple label3 = new JLabelUnderLineSimple( "Label(Border)下划线"); label3.setBorder(BorderFactory.createCompoundBorder(new LineBorder( Color.RED), BorderFactory.createEmptyBorder(8, 8, 8, 8))); f.add(label3); // f.pack(); f.setVisible(true); } }
效果图:
从上面的截图明显可以看出该版本不能很好支持自定义Border的标签。
[三]、完美实现下划线
优点:
- 下划线的颜色可以单独自定义
- 支持自定义的Border的标签
缺点:
- 暂时没有发现 吼吼
代码示例:
package michael.swing.label; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Insets; import java.awt.Rectangle; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.border.LineBorder; /** * @blog http://sjsky.iteye.com * @author Michael */ public class JLabelUnderLinePerfect extends JLabel { private Color underLineColor; public JLabelUnderLinePerfect() { this(""); } public JLabelUnderLinePerfect(String text) { super(text); } /** * @return the underLineColor */ public Color getUnderLineColor() { return underLineColor; } /** * @param pUnderLineColor the underLineColor to set */ public void setUnderLineColor(Color pUnderLineColor) { underLineColor = pUnderLineColor; } public void paint(Graphics g) { super.paint(g); Rectangle r = g.getClipBounds(); int xoffset = 0, yoffset = 0, pointX = 0, pointY = 0, point2X = 0, point2Y = 0; // 根据border的设置 计算出下划线的起止Point if (null != this.getBorder() && null != this.getBorder().getBorderInsets(this)) { Insets inserts = this.getBorder().getBorderInsets(this); // System.out.println(inserts); xoffset = inserts.left; yoffset = inserts.bottom; } pointX = xoffset; pointY = point2Y = r.height - yoffset - getFontMetrics(getFont()).getDescent(); point2X = pointX + getFontMetrics(getFont()).stringWidth(getText()); if (null != underLineColor) { g.setColor(underLineColor); } g.drawLine(pointX, pointY, point2X, point2Y); } /** * @param args */ public static void main(String[] args) { JFrame f = new JFrame("JLabe with Under Line"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(new Dimension(300, 200)); f.setLayout(new FlowLayout()); JLabelUnderLinePerfect label1 = new JLabelUnderLinePerfect("Label下划线"); f.add(label1); JLabelUnderLinePerfect label2 = new JLabelUnderLinePerfect("Label下划线"); label2.setUnderLineColor(Color.BLUE); f.add(label2); JLabelUnderLinePerfect label3 = new JLabelUnderLinePerfect( "Label(Border)下划线"); label3.setBorder(BorderFactory.createCompoundBorder(new LineBorder( Color.RED), BorderFactory.createEmptyBorder(8, 18, 28, 38))); label3.setUnderLineColor(Color.BLUE); f.add(label3); // f.pack(); f.setVisible(true); } }
效果图:
本文连接:http://sjsky.iteye.com/blog/1183817
转载请注明来自:Michael's blog @ http://sjsky.iteye.com
----------------------------- 分 ------------------------------ 隔 ------------------------------ 线 ------------------------------
发表评论
-
$JAVA_HOME环境变量在Mac OS X中设置的问题
2014-01-19 20:31 1638系统版本:Mac OS X 10.9.1 在 ... -
JBoss IIOP实现CORBA/IIOP访问EJB的示例
2014-01-17 14:08 617目录 概述 特性 示例演示 详见:http:// ... -
JavaIDL开发CORBA实例演示
2013-10-25 15:51 524目录: 概述 开发步骤 创建Java项目 -
OpenORB开发CORBA的实例介绍
2013-10-25 15:50 1266目录: 概述 开发步骤 -
java读取控制台输入的几种方法
2013-10-24 09:01 1069java读取控制台输入的 ... -
OSX系统中各种JDK的路径说明
2013-10-15 08:50 641不同厂商发布的JDK,在OSX下的安装路径是不同的。以我本机 ... -
Java 完美判断中文字符
2012-11-23 17:23 1024详见:http://www.micmiu.com/ ... -
java自带的MD5、SHA1算法演示
2012-06-04 10:23 3065详见:http://www.micmiu.com/lang ... -
解决java网络编程IPv6问题
2012-04-05 13:38 1379详见:http://www.micmiu.com/lang/j ... -
Java实现给图片添加水印
2011-08-21 12:21 15824blog迁移至 :http://www.m ... -
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2011-08-01 14:14 13694blog迁移至 :http://www.m ... -
proxool连接池介绍
2011-06-29 08:42 3907blog迁移至:http://www.micmiu.c ... -
c3p0配置介绍
2011-06-28 08:56 6606blog迁移至 :http://www.micmiu. ... -
apache-DBCP基本配置介绍
2011-06-27 00:04 13355blog迁移至:http://www ... -
JAVA中IP和整数相互转化介绍
2011-06-22 18:36 4774blog迁移至 :http://www.micmiu. ... -
JAVA线程池ThreadPoolExecutor
2011-06-21 19:00 8983blog迁移至:http://www.micmiu.c ... -
Java 获取当前Classpath
2011-06-19 11:50 8122blog迁移至:http://www ... -
Array和Collection相互转换以及copy深度的小测
2011-06-18 18:46 2263blog迁移至:http://www.micmiu.c ... -
扫描指定包下的类(包括jar文件里的类)
2011-05-27 12:56 5979blog迁移至:http://www.micmiu.c ... -
Java HotSpot dcevm 在debug模式下的热部署
2011-02-16 10:41 4335blog迁移至:http://www.micmiu.c ...
相关推荐
此外,JMenuItem还可以通过`setAccelerator()`方法设置快捷键,这通常会自动在菜单项的文字中显示对应的下划线。 在Swing中处理下划线需要注意的是,过度使用下划线可能会使用户界面显得杂乱,因此应当谨慎地选择...
在Java的Swing库中,`JTable`是用于创建数据网格视图的重要组件,它允许用户以表格的形式查看和操作数据。而`JButton`则是一个常用的按钮控件,通常用于触发某些动作或事件。将`JButton`添加到`JTable`中可以为用户...
在Swing中,对话框是一种特殊的窗口,用于向用户提供临时信息或者需要用户进行交互的情况。自定义对话框则允许开发者根据需求定制对话框的外观和行为,以满足特定的应用场景。 一、Swing中的对话框类型 Swing提供了...
在Java的Swing框架中,弹出对话框是与用户交互的一种常见方式,主要用于限制用户行为、提示用户操作结果或请求用户输入。JOptionPane类在Swing中扮演着关键角色,它提供了一系列静态方法用于创建各种标准对话框,如...
Java Swing是Java标准库中的一个组件集合,用于构建桌面应用程序用户界面。它是Java Foundation Classes (JFC)的一部分,提供了一套轻量级的GUI(图形用户界面)组件,支持丰富的交互功能。本离线API文档详细阐述了...
在Java Swing中更改皮肤的方法主要有以下步骤: 1. **导入所需的Look and Feel库**: 首先,你需要导入对应的L&F库。对于第三方L&F,可能需要下载并添加到项目的类路径中。 2. **初始化Look and Feel**: 在程序...
这是一个开源项目,它扩展了Java Swing,添加了对Web浏览器组件的支持。项目提供了两个核心的JAR文件:DJNativeSwing.jar和DJNativeSwing-SWT.jar。DJNativeSwing.jar是纯Swing实现,而DJNativeSwing-SWT.jar则利用...
Java Swing 中三种事件处理方法之比较 Java Swing 是 Java 中不可缺少的窗口工具组,是用户建立图形化用户界面(GUI)程序的强大工具。Java Swing 组件自动产生各种事件来响应用户行为。如当用户点击按钮或选择菜单...
在Java 2 Platform Standard Edition 5.0版本中,Swing提供了丰富的组件和功能,使得开发者能够创建美观且功能强大的桌面应用程序。这份"Java Swing 中文Api"文档是针对中国开发者设计的,它提供了详细的中文解释,...
Java Swing是一种用于构建桌面应用程序的Java库,它是Java Foundation Classes (JFC)的一部分。在Java Swing中,你可以创建丰富的用户界面,尽管它主要用于本地应用程序,但通过特定的技术和框架,Swing也可以支持...
在Swing中添加超链接并实现打开网页的功能,是很多开发者在创建交互式应用时可能遇到的需求。这篇博客文章(https://lazycat774880994.iteye.com/blog/567412)很可能详细讲解了如何在Swing应用中集成超链接,并且...
本资源“Swing样式大全(全56种经典)”涵盖了56种不同的Swing样式,这为开发者提供了广泛的选择,以便根据项目需求和用户喜好定制UI。下面将对Swing样式的一些核心概念和如何应用这些样式进行详细说明: 1. **默认...
本文将详细介绍两种在Java Swing中实现窗体添加背景图片的方法,并探讨Swing重绘过程中的`repaint()`和`updateUI()`的区别。 方法一:利用JLabel加载图片 此方法依赖于JLabel组件的`setIcon(Icon icon)`方法来加载...
本教程将详细讲解如何利用JFreeChart在Swing应用程序中实现这些功能,以及如何在折线图中动态添加线。 首先,确保你的开发环境已经配置了IntelliJ IDEA 15和Java 8。JFreeChart库也需要添加到项目中,可以通过Maven...
在Swing中,标签(JLabel)是一种非交互式的组件,用于展示文本或图像信息。本文将深入探讨Swing标签的使用,包括其创建、属性设置、事件处理等方面,帮助开发者构建丰富的GUI应用。 1. 创建Swing标签 创建Swing...
Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在Java中,Swing提供了丰富的组件库,用于创建美观且功能强大的桌面应用程序。Swing模板样式,即Swing组件的外观...
Swing是Java提供的一种轻量级的图形组件库,它允许开发者构建丰富的交互式应用。下面我们将深入探讨如何使用Swing来实现小球的显示、移动以及控制小球的数量,并涉及到与之相关的算法。 首先,我们需要导入Swing库...
Java Swing 是Java编程语言中用于构建桌面应用的一个图形用户界面(GUI)工具包。它是Java Foundation Classes (JFC)的一部分,提供了丰富的组件和功能,让开发者能够创建美观且功能丰富的应用程序。 Swing 绘图主要...
swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...