0

JTabbedPaneを作成し、全員にJPanelを追加してから、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"));
}

互換性のないタイプが見つかりました:java.awt.Componentが必要です:javax.swing.JPanel JPanel p = tp.getComponentAt(0);

しかし、私の本には、Component getComponentAt(int index)を使用すると、そのコンテンツにアクセスでき、JButtonがコンポーネントであることが覚えていると書かれています。それでwth?

4

1 に答える 1

1

Javadocを見ると、実際にJTabbedPane#getComponentAt(index)が返されることがわかりますComponent。ただし、それがJPanel(のタブにアクセスする場合は多かれ少なかれそうですJTabbedPane)と確信している場合は、いつでもキャストできます。

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

または、Swingについていくつか知っている場合はさらに良い

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

確かに、JPanelのサブクラスですJComponent

于 2010-11-25T10:25:02.713 に答える