gpt4 book ai didi

java - Swing JLabel : Provide gap between text and underline

转载 作者:行者123 更新时间:2023-12-02 01:14:15 24 4
gpt4 key购买 nike

如何在文本和下划线之间提供一些像素间隙,而不使用 HTML 或自定义绘画(如 here ),而是使用字体属性。这是我的 MRE:

import java.awt.Font;
import java.awt.font.TextAttribute;
import java.util.Collections;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;

public class LabelTryout {

public static void main(String[] args) {
JLabel label = new JLabel("Here is a underlined text");
label.setFont(underlineFont(label.getFont()));
label.setHorizontalAlignment(SwingConstants.CENTER);
JFrame frm = new JFrame("Underline");
frm.add(label);
frm.setSize(300, 200);
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.setLocationRelativeTo(null);
frm.setVisible(true);
}

/**
* Gets the underline font for the given base font.
*
* @param aBaseFont base font to paint it as underline.
* @return underline font.
*/
public static Font underlineFont(Font aBaseFont) {
// here I want to provide gap for the base font.
return aBaseFont.deriveFont(Collections.singletonMap(TextAttribute.UNDERLINE,
TextAttribute.UNDERLINE_ON));
}

}

如果不可能,请解释一下。

最佳答案

我不知道您可以使用任何属性来配置它。

如果您不想扩展标签来进行自定义绘画,那么您可以尝试:

  1. 使用CompoundBorder。您可以使用 EmptyBorderMatteBorder 来模拟线条的绘制

  2. 上述方法取决于布局和以其首选尺寸显示的标签。要强制执行此操作,您可以使用 FlowLayout 将标签包装在 JPanel 中,因为此布局遵循首选大小。

  3. 创建您自己的自定义边框Border 的绘制逻辑将查看首选尺寸和实际尺寸并相应地绘制线条。

  4. 创建一个也使用上述方法的自定义图标

这些可能是在不扩展 JLabel 的情况下进行自定义绘制的方法。

关于java - Swing JLabel : Provide gap between text and underline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58918344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com