我想要一个 JTextArea ,它的行为方式如下:
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继续到下一行的断线词,也就是说,您将得到如下内容:
jtextarea.setLineWrap(true)
_________ |I'm so co| |ol | |_________|
然后, jtextarea.setWrapStyleWord(true) 告诉textarea启用单词包装,因此结果如下:
jtextarea.setWrapStyleWord(true)
_________ |I'm so | |cool | |_________|
若要在帧调整大小时调整 JTextArea 大小,请使用 ComponentListener ;
ComponentListener
jframe.addComponentListener(new ComponentAdapter(){ public void componentResized(ComponentEvent e) { //the frame was resized, resize the textarea here });
更新
正如mKorbel所说,要调整 JTextArea 的大小,使用一个 LayoutManager 并让它完成所有的工作。
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);