我想创建一个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 !"));
事实上,JPanel
是 JComponent
的子类,它是
关于Java Swing JTabbedPane 将 JPanel 添加到选项卡然后修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275923/