要制作一个高度相对于内容长度但宽度恒定的JTextArea块,可以使用以下步骤:
JTextArea textArea = new JTextArea();
textArea.setPreferredSize(new Dimension(fixedWidth, initialHeight));
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
textArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
updateTextAreaHeight();
}
@Override
public void removeUpdate(DocumentEvent e) {
updateTextAreaHeight();
}
@Override
public void changedUpdate(DocumentEvent e) {
updateTextAreaHeight();
}
private void updateTextAreaHeight() {
int lineCount = textArea.getLineCount();
int lineHeight = textArea.getFontMetrics(textArea.getFont()).getHeight();
int newHeight = lineCount * lineHeight;
textArea.setPreferredSize(new Dimension(fixedWidth, newHeight));
textArea.revalidate();
}
});
通过以上步骤,你可以创建一个高度相对于内容长度但宽度恒定的JTextArea块。这种方法适用于需要根据内容动态调整高度的场景,例如聊天窗口、日志显示等。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云