2016-11-07 45 views
1

我有一個JOptionPane.showConfirmDialog。它必須顯示一個非常長的字符串。它們的長度不一。所以我做的是創建一個textArea,將字符串添加到文本區域。我不想做setColumnssetRowsJOptionPane.showConfirmDialog動態大小

有沒有辦法動態調整大小?請教建議。謝謝!

String longString="asdas";//Long string. 
JTextArea textArea = new JTextArea(longString); 
/*want to avoid setting the size*/ 
//textArea.setColumns(70); 
// textArea.setRows(5); 
textArea.setLineWrap(true); 
textArea.setBackground(null); 
textArea.setFont(null); 
textArea.setWrapStyleWord(true); 

int l_iResult = JOptionPane.showConfirmDialog(this, textArea , "Confirm Delete", 
                  JOptionPane.YES_NO_OPTION); 
+0

創建您自己的留言窗口lolz:D是可定製的 –

+0

*「我不想做'setColumns','setRows'」*爲什麼不呢?順便說一句 - 考慮使用帶HTML格式的'JLabel',並設置一個寬度到'body',它的寬度將與指定的一樣寬,但只有根據需要纔會高。這裏是[示例](http://stackoverflow.com/questions/7861724/is-there-a-word-wrap-property-for-jlabel/7861833#7861833).. –

+0

如果我設置300列,100行,那麼我將有一個大框,小文本和大量的空白空間 – Jacel

回答

1
JTextArea textArea = new JTextArea(longString); 
textArea.setSize(new Dimension(200, 16)); 

看起來如果指定了約200(或更高)的寬度的文本區域將能夠計算出它的高度允許的文字換行。

+0

不適用於長文本。 – Jacel

+0

@Jacel,定義長?它在Windows 7上使用JDK8工作。我複製了第一段(兩次)的文本,然後將文本包裝成13行。 – camickr

+0

您可能需要:textArea.setPreferredSize(new Dimension(600,300));這對我來說是一個非常棒的對話:) – DevilsHnd