我在尝试使用HTML div标签设置JLabel的宽度。
请考虑以下代码:
import javax.swing.*;
public class Xyzzy extends JFrame{
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
Xyzzy frame = new Xyzzy();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.PAGE_AXIS));
String s = "x ";
for (int i=0; i<200; ++i)
s += "x ";
JLabel jl = new JLabel("<html><div style=\"width: 300px;\">" + s + "</div></html>");
frame.add(jl);
frame.setSize(600, 600);
frame.setVisible(true);
}
});
}
}
我本以为JLabel应该是300像素宽,但实际上它大约有390像素宽。如果我将宽度规范更改为200像素,那么得到的标签大约有260像素宽。
我做错了什么?
float size = 300 / 1.3f; JLabel jl = new JLabel("<html><div style=\"width:" + size + "px;\">"+ s +"</div></html>");
这样大小将为300px。这是一个奇怪的解决方法,我不确定它是否总是有效,所以我只是把它放在注释中。 - alain.janinm