0

我有一个JTextPane内部 a JPanel,这JTextPane是在运行时填充文本。我希望当获取超过一行文本时JPanel,它会保持JTextPane高度动态变化。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尺寸变大时,我想改变pnlMidLiveTypeJPanel 的高度。

我怎么能做到这一点?

4

1 回答 1

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() 触发调整大小事件并成功。

于 2013-09-13T17:43:44.980 回答