2012-03-17 33 views
1

我試圖使用Swing組件重新創建Skype句柄即時消息。我正在使用帶有自定義ListCellRenderer的JList來呈現列表中的每個單元格。 ListCellRenderer擴展了一個JPanel,JPanel只包含一個標籤(我將放置用戶名)和一個JTextArea,這是用戶消息的去向。 JTextArea是我遇到的問題。嘗試使用Swing重新創建Skype對話面板

這裏是什麼,我有一個瞬間的圖像 -

  • 伊夫除去能夠自動隨附在NetBeans textarea的滾動窗格。
  • 我在此圖像中顯示導航器,設計視圖和實際程序(列表中有兩個元素)。

enter image description here

  1. 中textarea的文字實際上比這個形象在更長的時間,但它不是自動換行。我已經在此textarea的屬性框中將lineWrap和wrapStyleWord設置爲true,但它似乎沒有任何效果。然後我嘗試使用屬性框來設置最大大小,並且它也沒有任何影響。

  2. 有沒有什麼辦法可以用netbeans gui designer來控制組件周圍的填充/邊距。它給我的元件間距自動放置是幾個像素太小或兩個大。我需要列表的單元格組件上的確切位置。

僅供參考這裏是如何Skype的convesation面板外觀(紅色「布賴恩CS」香港專業教育學院補充的是,多數民衆贊成如何,我會在我的程序做的話)。正如你可以看到句子換行一樣,單元之間有適當的空間。那麼任何人都知道如何使用Swing來實現這一點?

enter image description here

+0

你試過setLineWrap(true); ? – Java42 2012-03-17 22:56:00

+1

我會使用JTable與自定義渲染器,而不是JList。 – 2012-03-17 23:04:20

+1

我也考慮使用標記。 JLabel將接受HTML並強制linewrap。就像 - > setText(「」+ text +「」)它也使得它更容易造型(我不記得Skype是否有豐富的文本),並且在組件上設置最小/最大/首選大小。這將有助於強制佈局,如果你準備進行渲染,JTable將更容易處理,在任何長時間的對話中,你都會想要渲染時進行優化。 – 2012-03-18 00:51:43

回答

0

的JTextArea是沒有問題的。 JList爲每一行設置heigth。請參閱JList.setFixedCellHeigth或setPrototypeCellValue