java - 创建 JPanel

标签 java swing oop layout

我的主类显示一个 JMenuBar。此 JMenuBar 由“calculator.ui.MenuBar”管理。

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

MenuBar 创建我的"file"JMenu 和“插入”JMenu。

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

文件菜单包含"file"的所有选项。在 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. 确保计算器对象已刷新。

注意:我还希望我的 JPanel 位于 TabbedPanes 中(如果这会改变任何内容;如果没有,那么一旦我知道第一个问题的答案,我就可以弄清楚该部分。)

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

最佳答案

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

有一个相关示例 here .

关于java - 创建 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060561/

相关文章:

java - 如何将文件存储在Android的缓存目录中?

java - 防止 JLabel 位置重置?

java - Jython jlist 文本未显示在 JFrame 中

java - 从字符串创建对象的正确 OOP 方法

java - java读取二进制文件并显示

java - 使用链表上的递归进行快速排序

java - 移动到附近的网格点

java - 二叉树的大小方法

c++ - 不释放内存是否可以接受

java - 如何在进行谷歌登录时获取用户的年龄和位置