当我运行下面的示例代码时,JTextArea的宽度是固定的(100px),而其高度是动态调整的,因为我在其中键入了一些文本。
例如,我从这开始:
--------------------
| some text |
--------------------
当我输入更多文本时,JTextArea的高度会扩展,以便在保留宽度的同时适合内容:
--------------------
| some text, some |
| other longer text|
| etc... |
--------------------
如何加倍JTextArea的宽度?
当我通过改变preferredSize
来做到这一点时,高度不再是动态的。
public class TestTextArea extends JFrame {
public static void main(String[] args) {
new TestTextArea().setVisible(true);
}
public TestTextArea() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(0,0,800,600);
setContentPane(createPane());
}
protected Container createPane() {
JTextArea textArea = createTextArea();
// ------------------------------------------
// UNCOMMENT TO DOUBLE THE WIDTH OF JTextArea
// Dimension oldPrefSize = textArea.getPreferredSize();
// Dimension newPrefSize = new Dimension(oldPrefSize.width * 2, oldPrefSize.height);
// textArea.setPreferredSize(newPrefSize);
JPanel pane = new JPanel(new FlowLayout());
pane.add(textArea);
return pane;
}
protected JTextArea createTextArea() {
JTextArea textArea = new JTextArea();
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
return textArea;
}
}
答案 0 :(得分:5)
使用JTextArea#setColumns
方法调整宽度
答案 1 :(得分:1)
将linewrap设置为true => textArea.setLineWrap(真); 这将使最大线宽= textarea与
答案 2 :(得分:0)
更改此行代码textArea.setPreferredSize(newPrefSize);至 textArea.setSize(newPrefSize); 高度将动态调整。