根据JPanels内部JTextPane高度动态调整外部JPanel的大小

时间:2013-09-13 17:27:39

标签: java swing

我在JTextPane中有一个JPanel,这个JTextPane在运行时正在填充文本。当JPanel获得多行文字时,我希望持有JTextPane的{​​{1}}动态更改高度。

这是迄今为止我所得到的:

JTextPane

因此,当 pnlChatMsgs = new JPanel(new BorderLayout()); pnlChatMsgs.setBackground(new java.awt.Color(244, 244, 244)); pnlMainTable.add(pnlChatMsgs, c); pnlMidLiveType = new JPanel(new BorderLayout()); pnlMidLiveType.setPreferredSize(new Dimension(100, 30)); JTextPane.setFont(new java.awt.Font("Lucida Grande", 0, 13)); JTextPane.setText("<html></html>"); JTextPane.setContentType("text/html"); JTextPane.setForeground(new java.awt.Color(153, 153, 153)); JTextPane.setBackground(new java.awt.Color(250, 250, 250)); pnlMidLiveType.add(JTextPane, BorderLayout.NORTH); pnlChatMsgs.add(pnlMidLiveType, BorderLayout.SOUTH); pnlMidLiveType.setVisible(false); 的大小增加时,我想更改JTextPane JPanel的高度。

我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

考虑以下示例。它演示了可扩展的JFrame和JPanel:

    final JFrame frame = new JFrame();
    JPanel panel = new JPanel(new BorderLayout());
    JTextPane pane = new JTextPane();
    pane.addKeyListener(new KeyAdapter() {
        @Override
        public void keyTyped(KeyEvent e) {
            frame.pack();
        }
    });
    panel.add(pane, BorderLayout.CENTER);
    frame.setContentPane(panel);
    frame.pack();
    frame.setVisible(true);

JFrame#pack()触发resize事件并完成操作。