2013-04-04 40 views
1

我正在創建一個涉及訪客和選項卡窗格的簡短程序。我想對JTabbedPane進行編程,因此當我單擊某個選項卡時,將使用JComponent的makeTextPanel函數顯示訪客的信息。但是,它似乎在運行時忽略'\ n'(新行)。有沒有什麼辦法解決這一問題?如何在JTabbedPane JComponent面板中創建新行?

這是我的GUI:

JTabbedPane overview= new JTabbedPane(); 
     JComponent accountinfo= makeTextPanel (guest.toString()); 
     overview.addTab ("Account Overview", accountinfo); 
     overview.setMnemonicAt(0, KeyEvent.VK_1); 

JFrame tabbed= new JFrame("AIR Reservation"); 
     tabbed.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     tabbed.add(overview); 
     tabbed.setSize(500,300); 
     tabbed.setLocationRelativeTo(null); 
     tabbed.setVisible(true);  

這是我的客戶類的toString方法:

public String toString() 
{ 
    customerstring= "Name: " + getName(); 
    customerstring+= "\nGender: " + getGender(); 
    customerstring+= "\nDate of Birth: " + getBirthDate(); 
    customerstring+= "\nPassport number: " + getPassportNumber(); 
    customerstring+= "\nBalance: " + getMoney(); 
    return customerstring; 

} 

感謝您的幫助! 編輯:這裏的makeTextPanel方法:

protected JComponent makeTextPanel(String text) 
{ 
    JPanel panel = new JPanel(false); 
    JLabel filler = new JLabel(text); 
    filler.setHorizontalAlignment(JLabel.CENTER); 
    panel.setLayout(new GridLayout(1, 1)); 
    panel.add(filler); 
    return panel; 
} 
+0

JComponent.makeTextPanel()不存在。也許你向我們展示了這種方法的作用。 – 2013-04-04 17:52:40

+0

哎呀,忘了包括。我編輯了我的帖子以包含該方法。謝謝! – nichi 2013-04-04 17:55:13

回答

1

你的面板包含一個JLabel有作爲文本您在makeTextPanel作爲參數傳遞的一個。如果文本爲html格式,則A JLabel可以具有多行。

所以你的文本應該封裝在<html></html>裏面,行分隔符應該是<br>

其他選項將使用JTextAreaJEditorPane而不是JLabel。如果需要,您可以將它們設置爲不可編輯。

+0

非常感謝!它工作的很棒:) – nichi 2013-04-04 18:01:51

+0

不客氣。 – 2013-04-04 18:02:30