【发布时间】:2016-04-23 15:21:58
【问题描述】:
我在 JPanel 中有多个 JTextAreas。我正在使用BoxLayout 使它们垂直对齐并填充容器的宽度。
它有效,但它们似乎也膨胀以填满整个高度。
我真正想要的很简单 - 一个包含文本的文本区域,我可以在其中控制宽度,但允许随着添加更多行而动态缩放高度。上述方法只是我最好的尝试。如果有一个解决方案使用不同的布局管理器、不同的文本组件等,那就可以了。
下面的最小可验证示例:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(300, 300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel textAreas = new JPanel();
textAreas.setLayout(new BoxLayout(textAreas, BoxLayout.Y_AXIS));
JTextArea area1 = new JTextArea();
area1.append("this is a string");
area1.setLineWrap(true);
area1.setWrapStyleWord(true);
textAreas.add(area1);
JTextArea area2 = new JTextArea("and another that is much longer, so that it wraps to the next line");
area2.setLineWrap(true);
area2.setWrapStyleWord(true);
textAreas.add(area2);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(textAreas);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
我自己研究过这个主题,包括查看不同的布局管理器 (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html),并查看网站上的其他问题,但我运气不佳。
TLDR:我可以让布局的每个元素都有一个可以缩放到其内容的高度但固定宽度吗?如果有怎么办?
【问题讨论】:
标签: java swing layout-manager jtextarea boxlayout