2010-11-25 42 views
0

我想創建一個JTabbedPane中,添加一個JPanel給大家,然後添加一些東西到的JPanel:的Java Swing JTabbedPane中添加的JPanel到選項卡,然後修改它

private void initTabbedPane(JTabbedPane tp) 
{ 
    System.out.println("FestplattenreinigerGraphicalUserInterface::initTabbedPane()"); 

    // Init Tab-Names 
    Vector<String> tabNames = new Vector<String>(); 
    tabNames.addElement("Startseite"); 
    tabNames.addElement("Konfiguration"); 
    tabNames.addElement("Hilfe"); 

    // Init Tabs 
    tp = new JTabbedPane(); 
    JPanel tmpPanel; 
    for(int i = 0; i < tabNames.size(); i++) 
    { 
     tmpPanel = new JPanel(); 
     tp.addTab(tabNames.elementAt(i), tmpPanel); 
    } 
    tp.setFont(new Font("Calibri", Font.BOLD, 11)); 
    initPanelsInTabbedPane(tp); 
    this.getContentPane().add(tp, BorderLayout.CENTER); 
} 

private void initPanelsInTabbedPane(JTabbedPane tp) 
{ 
    System.out.println("FestplattenreinigerGraphicalUserInterface::initPanelsInTabbedPane()"); 

    tp.getComponentAt(0).add(new JButton("HELLOSTUPIDJAVAIHATEU")); 
} 

那麼它說: 不兼容的類型 發現:必需:javax.swing.JPanel JPanel p = tp.getComponentAt(0);

但我的書說,與組件getComponentAt(INT索引),我可以訪問它的內容,我記得JButton是一個組件的權利?那麼呢?

回答

1

如果你看看Javadoc,你會發現JTabbedPane#getComponentAt(index)返回Component。但是,如果你確定這是一個JPanel(這是更或訪問JTabbedPane的標籤時少的情況下),你可以隨時將它轉換:

((JPanel) tp.getComponentAt(0)).add(new JButton("come on, Java is nice enough, no ?")); 

,或者甚至更好,如果你知道左右搖擺一些事情

((JCompoonent) tp.getComponentAt(0)).add(new JButton("No, Java and Swing positively rock hard awesome !")); 

的確,JPanelJComponent一個子類,其是

+0

哎TY riduidel,我選擇了你的第二個方法,因爲我認爲這是更普遍的(我只jpanels在我的標籤。但是不要緊)。 – JavaHater 2010-11-25 10:32:45

相關問題