2013-07-15 46 views
1

我已經給出了關於如何顯示消息列表的非常具體的要求。每條消息可以長達3200個字符。對於消息的這種特定顯示,只顯示每個消息的前兩行,顯示消息的原始格式完整(標籤,空格,換行符)。消息將包含在JInternalFrame中。當用戶拖動框架的一側以增加或減小其寬度時,消息的可見文本應與框架一起增加或減少,因此不需要水平滾動條。JTextArea中的垂直對齊

我能夠獲得所需的行爲與該文本增加/使用與所述幀的所述寬度減小的以下內容:

JTextArea ta = new JTextArea(); 
ta.setLineWrap(true); 
ta.setWrapStyleWord(true); 
ta.setRows(2); 
ta.setEditable(false); 
ta.setOpaque(false); 
ta.setText(longString()); 
ta.setAlignmentY(TOP_ALIGNMENT); 
JScrollPane scrollPane = new JScrollPane(ta); 
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); 
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 

scrollPanes的列表被添加到一個JScrollPane與垂直滾動條,但JInternalFrame中沒有水平滾動條。

我遇到的問題是文本停留在JTextArea的底部,因此用戶看到消息的最後兩行,而不是前兩行。似乎可以設置水平對齊,但不能設置垂直對齊。有什麼方法可以讓頂部的文本對齊自動擴展/縮小文本?

回答

1

這也是我在過去的事情。它與JTextComponents如何與JScrollPanes進行交互有關 - 特別是,在JTextComponent結尾處有一個(不可見的,當不可編輯的)Caret時。當視口試圖找出它應該查看的內容時,它會查看插入符號。

所以,告訴的JTextArea不是你初始化塊中移動插入符號:

 DefaultCaret c = new DefaultCaret(); 
     c.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); 
     ta.setCaret(c); 
1

加載到文本框區域後,您可以使用:

textArea.setCaretPosition(0); 
+0

沒有什麼區別 – Blunderchips