Java Swing JTabbedPane 将 JPanel 添加到选项卡然后修改它

标签 java jpanel jbutton jtabbedpane

我想创建一个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 是一个组件,对吗?那么呢?

最佳答案

如果您查看 Javadoc,您会发现确实是 JTabbedPane#getComponentAt(index)返回一个组件。但是,如果您确定它是 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 !"));

事实上,JPanelJComponent 的子类,它是

关于Java Swing JTabbedPane 将 JPanel 添加到选项卡然后修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275923/

相关文章:

java - 在 java swings 中切换/导航 jpanels

java - 如何通过按钮单击事件在 JPanel 中绘制矩形

java - 位于 ButtonGroup 中的 JradioButton 要 setSelected

java - 模拟 WebClient post 方法失败

java - Wicket 替换 ListView 中的项目

java - 出于 glasspane 的目的,为什么 Swing 中的输入元素似乎不被视为 JPanel 的一部分?

java - 如何在仍在处理由 JButton 中的单击触发的进程时更新 JLabel?

java - JButton 单击时会在文本周围留下一些边框

java - 为什么我不能首先在 Java 中获得鼠标点击计数 == 2?

java - 如何在 log4j 的 JSON 布局中为每条消息生成 UUID?