创建JPanel

时间:2012-06-16 03:34:22

标签: java swing oop layout

我的主要课程显示JMenuBar。这个JMenuBar是从“calculator.ui.MenuBar”管理的。

public JMenuBar createMenuBar() 
{
    JMenuBar menuBar = new JMenuBar();
    new calculator.ui.MenuBar(menuBar);
    return menuBar;
}

MenuBar创建我的“文件”JMenu和“插入”JMenu。

public MenuBar(JMenuBar menuBar)
{
    new FileMenu(menuBar);
    new InsertMenu(menuBar);
}

FileMenu包含“文件”的所有选项。在File类中,有一个名为“New Calculator”的JMenuItem。现在,当您单击“新计算器”时,我希望我的主类中的JPanel在我的主类中创建一个Calculator实例。

newFileSubMenu = new JMenu("New...");
calculatorFileSubMenu = new JMenuItem("New Calculator");

calculatorFileSubMenu.getAccessibleContext().setAccessibleDescription(
                "New Calculator");

newFileSubMenu.add(calculatorFileSubMenu);

ActionListener newCalculatorListener = new ActionListener() 
    {
    public void actionPerformed(ActionEvent event) 
    {
       newCalculator();
    }
};
calculatorFileSubMenu.addActionListener(newCalculatorListener);

这是我的主要类JPanel的代码:

public Container createContentPane() {
    JPanel contentPane = new JPanel(new BorderLayout());
    contentPane.setOpaque(true);

    JTabbedPane tabbedPane = new JTabbedPane();

    return contentPane;
}

我的问题与我的计划设计有关。对于Calculator的每个实例,我想:

  1. 在包含我的计算器的主JPanel中创建一个JPanel(我在这里遇到的是我如何 - 从我的FileMenu类 - 创建一个在我的主类中的JPanel?)。
  2. 确保计算器对象刷新。
  3. 注意:我也希望我的JPanels在TabbedPanes中(如果它改变了任何东西;如果没有,那么一旦我知道第一个问题的答案,我就可以想出那部分。)

    感谢您的帮助,我希望我对自己想做的事情已经很清楚了。

1 个答案:

答案 0 :(得分:2)

在您的菜单项Action中,您可以使用setSelectedIndex()上的JTabbedPane来选择包含现有计算器实例的窗格。您可以使用setComponentAt()将任何标签的内容替换为计算器实例。

有一个相关的例子here