`

Swing中Laber添加下划线

阅读更多

下划线的颜色可以单独定义

import java.awt.*;
import javax.swing.*;
import javax.swing.border.LineBorder;

public class JLabelUnderLinePerfect extends JLabel {

	private Color underLineColor;

	public JLabelUnderLinePerfect() {
		this("");
	}

	public JLabelUnderLinePerfect(String text) {
		super(text);
	}

	public Color getUnderLineColor() {
		return underLineColor;
	}

	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);
			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);
	}

	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);

	}
}

 

分享到:
评论

相关推荐

    java swing 下划线

    在Swing中,下划线通常用于实现各种视觉效果或者特定的功能,比如强调某个按钮或文本组件的重要信息,或者是实现快捷键的表示。在Java Swing中,下划线的应用主要体现在JButton、JLabel、JMenuItem等组件上。 在...

    Make a Label Act Like an Internet Link

    在大多数编程环境中,如Visual Basic(VB)、C#或Java Swing,标签控件(Label)是一个简单的图形组件,用于显示静态文本。通常,它们不响应鼠标点击事件,但我们可以自定义其行为。 在VB中,可以实现这个功能如下...

    富文本简单实现

    在Java的Swing或JavaFX中,可以使用`JTextPane`或`RichTextFX`库来实现富文本。通过` StyledDocument `对象,我们可以插入带有特定样式的文本片段。在JavaScript的前端开发中,我们可以利用HTML的`<span>`元素和CSS...

    JavaSE JLabel超链接例子

    在这个环境中,我们可以使用Swing库来创建用户界面。Swing提供了丰富的组件库,包括JLabel,它用于显示文本和图像。在JavaSE中,如果我们想要在JLabel中实现超链接效果,即点击文本后能够触发特定的动作,如打开一个...

    2021-2022计算机二级等级考试试题及答案No.19777.docx

    17. **Word下划线设置**:在Word中,添加波浪下划线应该使用【格式】或【开始】菜单中的字体设置,而不是【工具】菜单。 18. **Word格式工具栏**:I字母按钮用于使文本变为斜体,而不是粗体。 19. **TCP功能**:...

    2021-2022计算机二级等级考试试题及答案No.11993.docx

    - **知识点**: “追加查询”用于将一个或多个表中的记录添加到另一个表的末尾。 - 正确答案 D 描述了追加查询的功能。 ### 7. Java Swing 框架窗口 - **知识点**: 创建 Swing 框架窗口需要继承 `JFrame` 类。 - `...

    2021-2022计算机二级等级考试试题及答案No.17732.docx

    - **解释**: C++ 中的标识符必须以字母或下划线开头,并且只能包含字母、数字和下划线。例如,“&&a” 包含非法字符。 ### 14. Telnet 远程登录 - **知识点**: Telnet 协议允许用户远程登录到另一台计算机上执行...

    东师21春《Java程序设计》在线作业2-0004参考答案.docx

    - **解释**: Java 中合法的标识符可以包含字母、数字、下划线 `_` 和美元符号 `$`,但不能以数字开头,也不应与关键字相同。 ### 14. 获取请求参数的方法 在 Web 开发中,获取 HTTP 请求中的参数。 - **选择题...

    2021-2022计算机二级等级考试试题及答案No.13193.docx

    在大多数GUI框架中,如Java的Swing库,`MenuBar`通常直接继承自更高级的容器类,而不是基本的`Component`。 #### 题目2:事件触发机制 - **问题描述**:如果加载窗体,先被触发的事件是? - A. `Load`事件 - B. `...

    JAVA核心技术

    - 提供了一系列基本的GUI组件,如Button、Label等。 #### 第十二部分:JFC(Java Foundation Classes) - 包含Swing组件库,提供更丰富的GUI功能。 #### 第十三部分:Applets - 过时的技术,曾用于编写嵌入网页中...

    CoreJava学习笔记

    Java的标识符由字母、下划线、美元符号组成,并且不能以数字开头。 **数据类型:** Java的数据类型分为两大类:原始数据类型和引用数据类型。 1. **原始数据类型**:包括int、float、boolean等。 2. **引用数据...

    Java入门学习笔记

    ### Java入门学习笔记 #### 一、Java特点与运行...- AWT组件库包含了各种基本的GUI组件,如Button、Label等。 #### 十二、JFC(Java Foundation Classes) - JFC是Swing的基础,提供了更丰富的GUI组件和布局管理器...

Global site tag (gtag.js) - Google Analytics