带有HTML的JLabel没有正确设置宽度

oz1*_*1cz 4 html java swing resize jlabel

我试图使用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);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我原本预计JLabel的宽度为300像素,但实际上它的宽度约为390像素.如果我将宽度规格更改为200px,则生成的标签宽度约为260像素.

我究竟做错了什么?

vlo*_*loo 6

这个html代码对于JLabel来说太复杂了(仅支持HTML规范的一部分) http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JLabel.html
组件的大小取决于布局.我更喜欢MigLayout http://www.miglayout.com 简单教程

编辑:JLabel中的HTML非常过时