2013-05-22 43 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內正常運行。如果行或列的值等於零,則沿該軸的首選大小將用於沿同一軸的視口首選大小。