如何在JTabbedPane JComponent面板中创建新行?

时间:2013-04-04 17:50:14

标签: java string swing user-interface jtabbedpane

我正在创建一个涉及访客和选项卡式窗格的短程序。我想编写JTabbedPane,所以当我点击某个标签时,将使用JComponent makeTextPanel函数显示访客的信息。但是,它在运行时似乎忽略了'\ n'(新行)。有什么方法可以解决这个问题吗?

这是我的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);    

这是我的Customer类的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;
 }

1 个答案:

答案 0 :(得分:2)

您的面板中包含一个JLabel,其中包含您在makeTextPanel中传递的文本作为参数。如果文本是html格式,JLabel可以有多行。

因此,您的文字应封装在<html></html>内,而行分隔符应为<br>

其他选项是使用JTextAreaJEditorPane代替JLabel。如果需要,您可以将它们设置为不可编辑。