【发布时间】:2021-11-24 11:11:27
【问题描述】:
下面标签中的 html 代码按预期在浏览器中呈现。
好吧,java API 声明“边框”不完全受支持,但是中的填充
该示例也不起作用。
虽然我希望不大,但我想问一下是否有替代方案
html 来绘制边框。
我发现最接近的是一个单元格表。那里的填充工作,但最薄的边框非常丰富。
请注意,我只想框住单个单词,而不是整行或整段。
import javax.swing.*;
public class HtmlLabel extends JFrame {
public HtmlLabel() {
setSize(300,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("A JLabel with HTML text");
JLabel lb= new JLabel("""
<html>Please give <span style="border:1px solid; background:#D8EAFC;\
padding:5px">me</span> a frame.</html>""");
add(lb);
setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(HtmlLabel::new);
}
}
【问题讨论】:
-
Swing 仅支持 HTML 3.5 和有限的 CSS,这可能是这些限制之一
-
我只想框出单个单词,而不是整行或段落。 - 那么您的示例应该表明这一点。您当前的示例可以使用 JLabel 和边框中的普通文本轻松实现。当您在句子中仅“框定”单个单词时,我无法准确说出您期望看到的内容。我对HTML一无所知,但也许可以使用其他方法来达到您想要的效果。
-
@camickr 是的,您对示例的评论是正确的。所以我更新了代码。 - 目标是使文本看起来像一个小按钮,从而吸引眼球。 Html 可以绘制按钮,但是 java 只支持那些可操作的按钮,这意味着你可以真正按下它们。但是,对于帮助文本,我更喜欢死按钮。除了 html 表格解决方案之外,我还可以显示一个图形文件,然后我必须为每个按钮创建该文件 - 不是很吸引人,因为相当耗时。
-
试试基于 HTML 的 kbd 元素..
-
@Andrew Thompson 感谢您的建议,但在 Firefox 和 Java 中,标签仅将文本的字体呈现给 Monospace。