I donβt know a direct way to do this, but it can give you some ideas:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; public class TextPanePerfectSize extends JFrame { JTextField textField; JTextPane textPane; public TextPanePerfectSize() { textField = new JTextField(20); textField.setText("add text"); getContentPane().add(textField, BorderLayout.NORTH ); textField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { try { Document doc = textPane.getDocument(); doc.insertString(doc.getLength(), " " + textField.getText(), null); textField.setText(""); Dimension d = textPane.getPreferredSize(); Rectangle r = textPane.modelToView( textPane.getDocument().getLength() ); d.height = ry + r.height; textPane.setPreferredSize( d ); getContentPane().validate();
source share