JScrollPane中的JPanel上的JTextAreas无法正确显示

时间:2013-05-22 08:14:01

标签: swing scrollbar jscrollpane

我已经通过swing创建了一个demo,我想在textarea中显示全文。我想在滚动条中添加两个textarea来显示滚动条中的所有组件。所以要做到这一点,我创建一个面板,然后在这个上添加两个textarea,然后我将此面板添加到滚动条中。当我运行演示时,它显示正确,并且当我调整窗口大小时它也正确显示但是当我调整较小屏幕时它有问题。调整屏幕大小时(而不是显示水平滚动条),它不会包装文本。 当你把屏幕调整得更小时,你能帮我自动包裹。

这是我的代码: JPanel gui = new JPanel(new GridLayout());      gui.setBorder(new EmptyBorder(2,3,2,3));

 JTextArea area = new JTextArea("JTextArea on JPanel inside JScrollPane does not resize properly");
 area.setWrapStyleWord(true);
 area.setLineWrap(true);
 gui.add(area);

 JTextArea area1 = new JTextArea("JTextArea on JPanel inside JScrollPane does not resize properly");
 area1.setWrapStyleWord(true);
 area1.setLineWrap(true);
 gui.add(area1);

 gui.setBackground(Color.WHITE);

 JScrollPane scroller = new JScrollPane(gui);
 //scroller.setBorder(new EmptyBorder(2, 3, 2, 3));
 JFrame f = new JFrame("Big Text Fields");
 f.add(scroller,BorderLayout.CENTER);
 // Ensures JVM closes after frame(s) closed and
 // all non-daemon threads are finished
 f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 // See http://stackoverflow.com/a/7143398/418556 for demo.
 f.setLocationByPlatform(true);

 // ensures the frame is the minimum size it needs to be
 // in order display the components within it
 f.pack();
 // should be done last, to avoid flickering, moving,
 // resizing artifacts.
 f.setVisible(true);

1 个答案:

答案 0 :(得分:0)

只需省略滚动窗格,并使文本区域成为容器的直接子项。

JTextArea会根据其包含的文本更改其首选大小。来自文档:

java.awt.TextArea有两个属性行和列,用于确定首选大小。当放置在JScrollPane中以匹配java.awt.TextArea提供的功能时,JTextArea使用这些属性来指示视口的首选大小。 JTextArea具有显示所有文本所需的大小,因此它在JScrollPane内部正常运行。如果行或列的值等于零,则沿该轴的首选大小将用于沿同一轴的视口首选大小。