我想要一个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);
}
}
发布于 2013-07-05 08:23:32
这是:
jtextarea.setLineWrap(true);
jtextarea.setWrapStyleWord(true);
当到达当前行的末尾时,将使textarea在下一行继续。基本上,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
并让它完成所有的工作。
发布于 2013-07-05 08:30:39
正如在另一个答案中提到的,与行包装和包装样式相关的两个JTextArea
方法很重要,但是组件侦听器是不必要的。请参阅代码的这个紧密变体,它建议构造函数的列和行中的文本区域大小,并打包GUI。
import java.awt.BorderLayout;
import javax.swing.*;
public class TestCode2 {
public static void main(String[] args) {
JFrame window = new JFrame("Test2");
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel container = new JPanel(new BorderLayout());
window.add(container);
JLabel labelNorth = new JLabel("North");
container.add(labelNorth, BorderLayout.PAGE_START);
JLabel labelSouth = new JLabel("South");
container.add(labelSouth, BorderLayout.PAGE_END);
JTextArea ta = new JTextArea(7,30);
ta.setWrapStyleWord(true);
ta.setLineWrap(true);
JScrollPane taScrollPane = new JScrollPane(ta);
taScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
taScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
container.add(taScrollPane);
window.pack();
window.setVisible(true);
}
}
发布于 2013-07-05 08:40:17
点2.线布是可以设置的JTextArea
的一个属性。
API文档:
public void setLineWrap(boolean wrap)
将此添加到代码中:
ta.setLineWrap(true);
https://stackoverflow.com/questions/17484242
复制相似问题