Java Swing JTabbedPane добавить JPanel во вкладку, а затем изменить его - PullRequest
0 голосов
/ 25 ноября 2010

Я хочу создать 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 required: javax.swing.JPanel JPanel p = tp.getComponentAt (0);

Но в моей книге сказано, что с помощью компонента getComponentAt (int index) я могу получить доступ к его содержимому, и я помню, что JButton является правильным компонентом?Так что?

1 Ответ

1 голос
/ 25 ноября 2010

Если вы посмотрите на 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, который

...