2013-05-22 47 views
0

我已经通过swing创建了演示,并且我想在textarea中显示全文。我想将两个textarea添加到滚动条中以显示滚动条内的所有组件。为此,我创建一个面板,然后在这个面板上添加两个textarea,然后将此面板添加到滚动条中。当我运行演示时,它显示正确,并且当我调整窗口的大小时它也能正确显示,但当调整缩小屏幕时它有问题。在缩小屏幕大小时(而不是显示水平滚动条),它不包裹文本。 您可以帮助我在缩小屏幕尺寸时自动换行。JTextArea在JscrollPane中的JPanel上显示不正确

这里我的代码: 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); 
+0

为什么将包含文本区域的面板添加到滚动窗格?为什么不在每个文本区域添加自己的滚动窗格? – MadProgrammer

回答

0

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

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

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