【发布时间】:2013-04-07 10:15:01
【问题描述】:
我正在尝试创建一个带有选项卡和菜单栏的框架,每个选项卡将包含不同的JTable,我想知道是否可以将不同类的构造函数添加到选项卡?
我的意思是:
public class Administrator() {
JFrame frame;
JTabbedPanel tabPan;
JPanel firstTab, secondTab;
JMenuBar menuBar;
JMenu menu;
JMenuItem mi1;
Administrator() {
frame = new JFrame("Test");
frame.setDefaultClopseOperation(JFrame.EXIT_ON_CLOSE);
tabPan = new JTabbedPane();
firstTab = new JPanel();
secondTab = new JPanel();
menuBar = new JMenuBar();
menu = new JMenu("Menu");
mi1 = new JMenuItem("1");
menu.add(mi1);
menuBar.add(menu);
frame.addJMenuBar(menuBar);
tabPan.addTab("First",firstTab);
tabPan.addTab("Second",secondTab);
frame.setVisible(true);
}
public static void main(String[] args) {
new Administrator();
}
然后是第二(第一)类:
public class First() {
JTable firstTable = new JTable();
//....
First() {
//...
firstTab.add(firstTable);
//...
}
}
编辑
好的,我找到了一种方法,Jtabbedpane using multiple classes,但现在我有一个不同的问题,我如何在主类中使用 JMenuBar?我扩展了 JPanel,而不是类,我可以在其他类中以某种方式使用它们吗?
【问题讨论】:
-
我不确定你在问什么。您想将 JMenuBar 添加到 JPanel 吗?如果是这样,您可以将 JMenuBars 添加到我无法立即记住的自定义组件中,但我相信它是您必须实现的接口以允许它包含 JMenu。如果您查看从 JFrame 开始的 API 并遵循超类,您会看到它在接口中列出,可能在 Window 类或其超类周围的某个地方,它有一个明显的名称,如果我想到它,我会让你知道。如果那不是您要问的,请更具体地说明您想做什么,我会尽力提供帮助。祝你好运。
-
它在Frame类中,接口是MenuContainer。我没有弄乱它,但我很确定这将允许您将 JMenuBar 添加到自定义容器中。但是我会考虑尝试以另一种方式完成同样的事情,很多时候事情并不经常使用它,因为有一种更简单的方法可以做到这一点,尽管情况并非总是如此。只是想一想。
-
示例:两个类,一个有一个 JMenuBar,第二个扩展 JPanel,我可以在第二个类中以某种方式使用第一类 JMenuBar 吗?现在我不能,因为二等舱不扩展一等舱。
-
我将其作为答案进行了回复,因此我可以为您格式化一个简短的示例程序。在该程序中,菜单在框架类中创建,对它的引用及其组件存储在面板类中。您应该能够像在框架类中一样使用面板类中菜单栏的任何部分。
标签: java swing constructor jtabbedpane