2016-01-24 73 views
0

我在JPanel中有一個JTextArea。 JPanel具有空佈局或使用絕對佈局。 JTextArea具有固定的寬度。我如何設置JTextArea高度以適應其內容?Java - 如何設置JTextArea高度以適應其內容?

我有這樣的代碼:

*some random string of varying length* 
String str = "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda" 
      + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda" 
      + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda" 
      + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda" 
      + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda" 
      + "kdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkdafkakopwepopkkda"; 


JTextArea wtd = new JTextArea(str); 
wtd.setLineWrap(true); 
wtd.setOpaque(false); 
wtd.setEditable(false); 
wtd.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); 
wtd.setLocation(*defined x position*, *defined y position*); 
wtd.setPreferredSize(new Dimension(*fixed width*, *the height depending on the content*)); 
wtd.setSize(wtd.getPreferredSize()); 
add(wtd); 

在此先感謝您的幫助!

回答

2
  1. 請勿使用null佈局。雖然Swing的新手可能看起來像是創建複雜GUI的最簡單也是最好的方式,但更多Swing GUI的創建使用它們時會遇到更嚴重的困難。它們不會在GUI大小調整時調整組件的大小,它們是增強或維護的皇室女巫,當它們放在滾動窗格中時它們會完全失敗,在所有平臺或屏幕分辨率與原始視圖不同時,它們看起來會非常糟糕。
  2. 不要爲JTextAreas設置絕對高度或寬度或首選大小有史以來 - 通過這樣做,您完全阻止它們在JScrollPanes中的使用。
  3. 改爲設置JTextArea的列和行屬性。
+0

感謝您的回答! 我使用空佈局,因爲我正在做某種相對佈局(如在Android中)。如果有一個類似於相對佈局的佈局,它是什麼佈局? 另外,我如何知道我放入的字符串的行數?我在JTextArea中放置的字符串可能會有所不同,它並不固定在一定數量的字符上。 – esfox

+0

@cLix:我對相對佈局不熟悉,但始終考慮嵌套JPanel,每個JPanel都有自己的佈局,以允許簡單地創建複雜的GUI。同時查看第三方佈局,如MigLayout。 –

+0

嵌套JPanels似乎是一個好主意。我會嘗試尋找一種適合我想做的佈局。順便說一句,我談論的相對佈局是一個佈局,其中組件的位置將基於其他組件的位置。例如,如果我想要一個JButton在JLabel下,我將獲取JLabel的y位置和高度,然後添加它們(或添加一個已定義的間隙),並將其設置爲y的位置JButton。這是這樣的。 – esfox

相關問題