如何在 JInternalFrame 中添加 JLabel?

How to add JLabel in JInternalFrame?

我在Jlabel中有一个HTML table(java),我想在JInternalFrame中显示JLabel 或者我想在没有 JLabel 的情况下将 small HTML table 添加到 Jinternalframe 中。 我怎样才能实现?我想要 JLabel 代替 header 而不是 body.

    package code;

    import javax.swing.JFrame;
    import javax.swing.JInternalFrame;
    import javax.swing.JButton;
    import javax.swing.JLabel;

    import java.awt.FlowLayout;

    class JInternalFrameTest extends JFrame {

        JInternalFrameTest()
        {
            setTitle("JInternalFrame");
            setJInternalFrame();
            setSize(700,300);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

        void setJInternalFrame()
        {
            String htmlContent = "<html><body><table border = '1'>";
            htmlContent += "<tr><td>Hai</td></tr></table></body></html>";
            JLabel label = new JLabel();
            label.setText(htmlContent);
            JInternalFrame jn = new JInternalFrame("I want jlabel here",true,true,true);
jn.add(label);
            jn.setLayout(new FlowLayout());
            jn.add(new JButton("JButton"));
            jn.setVisible(true);
            add(jn);
        }
    }

    public class JavaApp {
        public static void main(String[] args) {     
            JInternalFrameTest jn = new JInternalFrameTest();
        }
    }

由于注意力不集中,看起来像是个问题 - 只需将您的 label 添加到 jn 控件:

jn.add(label);

这是修复的结果(我还添加了 <tr><td>sdfsdfsf</td></tr> 到您的 table。

UPD: 经过多次澄清后,决定将这个新标签添加到 JInternalFrame 的标题栏中。也可以这样做:

void setJInternalFrame() {
     String htmlContent = "<html><body><table border ='1' bgcolor='#EEEEEE'>"
                + "<tr><td>Hai</td></tr></table></body></html>";

     JInternalFrame jn = new JInternalFrame("I want jlabel here", true, true, true);

     JComponent titleBar = ((BasicInternalFrameUI) jn.getUI()).getNorthPane();

     JLabel label = new JLabel();
     label.setText(htmlContent);
     label.setBounds(128, 0, 40, 20);
     titleBar.add(label);

     jn.setLayout(new FlowLayout());
     jn.add(new JButton("JButton"));
     jn.setVisible(true);
     add(jn);
}

结果如下:

要更改标题栏的高度,您可以使用以下命令:

titleBar.setPreferredSize(new Dimension(titleBar.getPreferredSize().width, 100));
// don't forget to set a proper size for the label
label.setBounds(128, 10, 40, 100);

结果:

希望这会有所帮助。