У меня есть образец панели, в которой есть другой компонент, в моем случае JTextArea. Я хочу увеличить высоту панели по мере увеличения высоты JTextArea с фиксированной шириной. Я установил фиксированную ширину для панели.
public class Panel extends JPanel {
public Panel() {
setPreferredSize(new Dimension(300, 85));
setLayout(new BorderLayout());
JPanel pic = new JPanel(new FlowLayout(FlowLayout.LEFT));
pic.setBackground(Color.GRAY);
pic.add(new JLabel(new ImageIcon("img/icon.png")));
JPanel status = new JPanel(new FlowLayout(FlowLayout.LEFT));
status.setBackground(Color.GRAY);
JTextArea textArea = new JTextArea();
String text = "The quick brown fox jumps over the lazy dog. "
+ "The quick brown fox jumps over the lazy dog. "
+ "The quick brown fox jumps over the lazy dog. "
+ "The quick brown fox jumps over the lazy dog. "
+ "The quick brown fox jumps over the lazy dog. "
+ "The quick brown fox jumps over the lazy dog. "
+ "The quick brown fox jumps over the lazy dog.";
textArea.setText(text);
textArea.enable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
add(textArea);
status.add(textArea);
add(pic, BorderLayout.WEST);
add(status, BorderLayout.CENTER);
setBorder(BorderFactory.createEtchedBorder());
}
public static void main(String[] args) {
JFrame f = new JFrame("Panel Test");
f.add(new Panel());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
}
И я не хочу полосу прокрутки для JTextArea. Я хочу, чтобы он занимал столько же высоты, сколько требуется для полного просмотра его содержимого.