【问题标题】:Creating a JPanel创建一个 JPanel
【发布时间】:2012-06-19 02:34:29
【问题描述】:

我的主类显示一个 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 在我的主类中创建一个计算器实例。

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;
}

我的问题与我的程序设计有关。对于每个计算器实例,我想:

  1. 在包含我的计算器的主 JPanel 中创建一个 JPanel(让我感到困惑的是我如何 - 从我的 FileMenu 类 - 创建一个在我的主类中的 JPanel?)。
  2. 确保 Calculator 对象刷新。

注意:我还希望我的 JPanel 出现在 TabbedPanes 中(如果这改变了任何东西;如果没有,那么一旦我知道第一个问题的答案,我就可以弄清楚那部分。)

感谢您的帮助,我希望我已经足够清楚我想要做什么了。

【问题讨论】:

    标签: java swing oop layout


    【解决方案1】:

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

    有一个相关的例子here

    【讨论】:

    • 我按照您的路径更改了我的菜单的构造函数以包含我的主 JPanel。然后,当我点击“新建计算器”按钮时,我使用 JTabbedPane.addTab 创建选项卡。谢谢!
    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多