我想要一个具有以下行为方式的 JTextArea
:
始终显示垂直滚动条
当文本到达行尾时,它将继续到下一行(而不是继续在同一行但被隐藏)
调整窗口大小时,文本会刷新,因此,如果窗口较大,文本的高度就会降低。
第 1 点很简单,但我找不到第 2 点和第 3 点的方法,因此任何帮助将不胜感激。这是我编写的示例代码:
public class TestCode2 {
public static void main(String[] args) {
JFrame window = new JFrame("Test2");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(400, 200);
JPanel container = new JPanel(new BorderLayout());
window.add(container);
JLabel labelNorth = new JLabel("North");
container.add(labelNorth, BorderLayout.NORTH);
JLabel labelSouth = new JLabel("South");
container.add(labelSouth, BorderLayout.SOUTH);
JTextArea ta = new JTextArea();
JScrollPane taScrollPane = new JScrollPane(ta);
taScrollPane
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
taScrollPane
.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
container.add(taScrollPane);
window.setVisible(true);
}
}
最佳答案
这个:
jtextarea.setLineWrap(true);
jtextarea.setWrapStyleWord(true);
将使文本区域在到达当前行的末尾时继续下一行。基本上,jtextarea.setLineWrap(true)
告诉textarea继续到下一个换行单词,即你会得到类似这样的东西:
_________
|I'm so co|
|ol |
|_________|
然后,jtextarea.setWrapStyleWord(true)
告诉textarea启用自动换行,所以结果将是这样的:
_________
|I'm so |
|cool |
|_________|
要在框架大小调整时调整 JTextArea
的大小,请使用 ComponentListener
;
jframe.addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent e) {
//the frame was resized, resize the textarea here
}
});
<小时/>
更新
正如 mKorbel 所说,要调整 JTextArea
的大小,请使用 LayoutManager
并让它完成所有工作
关于java - JTextArea 具有自适应宽度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484242/