Java:Swing 中的 HTML/CSS,内联显示不起作用
Posted
技术标签:
【中文标题】Java:Swing 中的 HTML/CSS,内联显示不起作用【英文标题】:Java: HTML/CSS in Swing, display inline not working 【发布时间】:2011-11-10 19:01:46 【问题描述】:我正在尝试使用 html/CSS 在 Swing JButton 中显示复杂的字符串。我正在使用 Swing 支持的 CSS1 属性。问题是以下导致按钮标题分成 3 行而不是单行:
javax.swing.JButton("<html><div style='display:inline;'>regular </div><div style='background-color:#336699;color:#fff;display:inline;'>special</div><div style='display:inline;'> regular again");
请注意,上述字符串在浏览器网页中效果很好,生成单行(无换行符):
我尝试使用“float:left”和“display:inline-block” - 这些也没有明显的效果。
有人知道为什么会发生这种情况以及可以做些什么吗? 请限制您对 HTML/CSS 的回答,因为我不希望为此问题实施特殊的 L&F 或类。
【问题讨论】:
【参考方案1】:传统上<span>
就像<div>
一样,只是它默认为内联显示。我会先尝试一下,然后再搞砸其他事情。
编辑:
好的,所以我玩了一下,下面的 html 对我有用:
"<html>" +
"regular" +
"<font style='background-color:#336699; color:#fff;'>special</font>" +
"regular again"
【讨论】:
我认为这更像是评论的材料,而不是答案,但我会让它滑动...... 感谢建议,可惜效果一样。 不知道为什么 span 标签不起作用(它应该是 dangit),但<font>
标签似乎可以完成这项工作。
你两次都是正确的,显然: 也可以,如果你只使按钮足够大。显然,如果按钮太窄,Swing 会自动换行文本。这适用于 和 但正如我在问题中指出的那样,由于某些奇怪的原因不适用于 。奇怪,但至少现在我们有一个解决方法。再次感谢!
是的,奇怪的是 div 的 css display 属性被忽略了。很高兴它现在对你有用:)【参考方案2】:
1) 您的 Html/Css 语法不适用于 Java6 "
而不是 '
,反之亦然
2)请您的问题将基于此SSCCE
图片
代码
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
import org.pushingpixels.trident.Timeline;
public class ButtonFg extends JFrame
private static final long serialVersionUID = 1L;
public ButtonFg()
JButton button = new JButton("<html><div style='display:inline;"
+ "'>regular </div><div style='background-color:#336699;"
+ "color:#fff;display:inline;'>special</div>"
+ "<div style='display:inline;'> regular again");
button.setForeground(Color.blue);
button.setFocusPainted(false);
add(button);
final Timeline rolloverTimeline = new Timeline(button);
rolloverTimeline.addPropertyToInterpolate(
"foreground", Color.blue, Color.red);
rolloverTimeline.setDuration(2500);
button.addMouseListener(new MouseAdapter()
@Override
public void mouseEntered(MouseEvent e)
rolloverTimeline.play();
@Override
public void mouseExited(MouseEvent e)
rolloverTimeline.playReverse();
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(150, 150);
pack();
public static void main(String[] args)
SwingUtilities.invokeLater(new Runnable()
@Override
public void run()
new ButtonFg().setVisible(true);
);
【讨论】:
您只是在证明我在问题中所说的话 - display:inline 属性显然在 Swing 中不起作用。我的问题是(1)为什么?和(2)如何解决?感谢您的回答,但它没有回答这些问题。以上是关于Java:Swing 中的 HTML/CSS,内联显示不起作用的主要内容,如果未能解决你的问题,请参考以下文章
wordpress 打印中的简码始终位于顶部,内联 HTML