如何在JInternalFrame中添加JLabel?

时间:2017-09-17 09:58:12

标签: java swing jlabel jinternalframe

我在Jlabel(java)中有一个HTML表,我想在JInternalFrame中显示JLabel 或者我想在没有JLabel的情况下将小型HTML表添加到Jinternalframe中。 我怎么能实现?我希望JLabel取代头部而不是身体。

    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();
        }
    }

1 个答案:

答案 0 :(得分:0)

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

jn.add(label);

以下是修复的结果(我还在表格中添加了<tr><td>sdfsdfsf</td></tr>enter image description here

<强> 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);
}

结果如下:

enter image description here

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

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);

结果:

enter image description here

希望这会有所帮助。