2014-02-18 63 views
0

我有一個JPanel(我也嘗試過一個JTextArea),我希望在上面有文本。該文本需要被Java Swing GUI:文本包裝,中心文本和自定義字體?

  1. 中心
  2. 自動換行,我現在使用的是安裝在計算機上
  3. 使用從.TTF文件的自定義字體。我已經解決了這個問題,並且字體工作正常。然而,當我將它放置在標籤中時,它並不是工作,因爲我已經看到它是我的問題的可能解決方案。

我通常可以得到兩個這些規則的工作,但不能讓所有三個一次工作。我試過html標籤,JLabels,JTextAreas,但沒有一個滿足所有條件。有什麼建議麼?

static JTextArea quesLbl; 
quesLbl = new JTextArea(""); 
quesLbl.setWrapStyleWord(true); 
quesLbl.setLineWrap(true); 
quesLbl.setEditable(false); 
quesLbl.setFont(qFont); 
quesLbl.setOpaque(true); 
quesLbl.setForeground(Color.WHITE); 
quesLbl.setBackground(Color.BLUE); 

此代碼導致文本被文字包裝,字體工作,但未居中。

+2

使用JTextArea或JEditorPane,並以[MCVE](http://stackoverflow.com/help/mcve)的形式發佈您要運行的代碼。 –

+0

你已經嘗試了什麼?如果你不顯示你的代碼/工作,人們不會幫助你。 –

+0

你需要水平還是垂直居中? –

回答

2

假設你的意思是水平居中,我會建議使用JTextPane。我沒有測試,但我希望,設置你的字體也可以。對於定心,看到Centering Text in a JTextArea or JTextPane - Horizontal Text Alignment,我有引述現在答案:

public JTextPane createTextPane(String text){ 
    JTextPane textPane = new JTextPane(); 
    tp.setText(text); 
    StyledDocument doc = textPane.getStyledDocument(); 
    SimpleAttributeSet center = new SimpleAttributeSet(); 
    StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER); 
    doc.setParagraphAttributes(0, doc.getLength(), center, false);+ 
} 

IIRC自動換行應該來免費。希望這有助於,如果沒有,請澄清問題。

+0

我有點不確定如何使用這些。你能否提供另一個如何使用JTextPane的例子? – nicocolton

+0

@nicocolton添加了一些行。代碼現在創建文本窗格並設置文本。它也應該居中。代碼沒有經過測試,所以沒有保修;-)如果你想設置字體,看看這裏http://javatechniques.com/blog/setting-jtextpane-font-and-color/ –

+0

得到它的工作,自動換行和居中作品,但自定義字體不顯示(雖然字體大小是正確的)。就像我說的那樣,這個字體沒有安裝在電腦上,但是它在JLabel上可以工作。 – nicocolton

0

這確實爲中心和自動換行的一部分,我的工作:

JLabel label = new JLabel(); 
label.setText("<html><body style='text-align:center'> This is some very long sentance with many letters and not so much meaning.</body></html>"); 
label.setHorizontalAlignment(JLabel.CENTER); 
label.setVerticalAlignment(JLabel.CENTER); 

上述解決方案也在努力,但我需要的是,標籤上我的另一個組件之上(這沒有按」與JTextPane一起工作)。