2017-03-15 72 views
0

我想根據JTextArea中getLineCount函數的返回值設置ScrollPane中的高度。 當我在ScrollPane的Dimension中將該值設置爲高度時,它非常小。我已經添加了* 20來獲得最接近我期待的結果。 但是,使用這個技巧,getLineCount的數字越大,它變得越不準確,這意味着JScrollPane的高度變得比我希望的高。如何將JTextArea行數的值轉換爲Dimension height_JAVA

我需要一個公式來轉換它們之間的指標。然而,我不確切知道它們返回/使用的是什麼度量,除非它們是int值。

如果有內置庫來轉換這兩者,它也可能會有用。 關於這個問題似乎沒有很多在線帖子。有沒有人遇到過這個問題?

int height= textArea.getLineCount(); 
JScrollPane scrollPane = new JScrollPane(textArea); 
scrollPane.setPreferredSize(new Dimension(1, height* 20)); 
+2

這是什麼意思?如果您嘗試將滾動窗格的大小調整爲文本區域的大小,則不需要滾動窗格。 – camickr

+0

['JTextArea#setRows'](https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextArea.html#setRows-int-) – MadProgrammer

+0

@camickr我明白你提出的問題。我知道通常在滾動窗格中設置某些高度是毫無意義的。但是,在這個階段我需要設置一定的高度來查看JTextArea的全文,並且在將來我會實現一個將其降低到一定高度的函數。一旦它減少,我將在滾動窗格中使用滾動條。爲了使未來的實現更容易,我在此階段使用滾動條禁用滾動條。 –

回答

3

這是什麼意思?如果您嘗試將滾動窗格的大小調整爲文本區域的大小,則不需要滾動窗格。

不要嘗試管理大小。不要嘗試使用setPreferredSize()方法。

相反,您可以定義要在文本區域顯示的行數,而不使用JTextAreasetRows(...)方法滾動。

這將允許文本區域根據文本區域的行和字體確定其首選大小。該滾動窗格將自動調整爲文本區域的首選大小。

如果添加了更多行數據,則會出現滾動條。

+0

我已經解決了,謝謝你的建議。不過,我用textArea.setRows(textArea.getLineCount());然後我從textArea.getRows()獲取行;然後我通過textArea.setAlignmentX(rows)設置textArea的高度; ..我從scrollpane中移除了setPreferredSize,並且如您所說,滾動窗格將被調整爲textArea的高度。謝謝! –

1

你這樣做的方式是設置高度值,就像每條線的高度爲1像素一樣。

將您的行號碼乘以Graphics.getFontMetrics().getHeight(),其中您的圖形上設置了字體。它應該解決你的問題

+0

感謝您的快速回復。 Font類沒有getHeight函數。你的意思是getSize ..?或者你的意思是在JTextArea中的文本! –

+0

@ In-youngChoung不,不是getSize。我再次糾正了我的回答 – ControlAltDel

+0

@ In-youngChoung,對不起。再次修復。我認爲現在是 – ControlAltDel