【发布时间】:2012-02-03 17:54:07
【问题描述】:
我有 1 个 JFrame 和 10 个 JPanel 组件作为单独的类。 jframe 上还有 JMenuBar。单击菜单项时,我会删除 jframe (removeAll) 的 contentPane 的所有内容并添加我的一个 jpanel。
这是我的代码;
// this function changes panel
public static void SwitchPanel(Component comp)
{
Container panel = getContentPane();
panel.removeAll();
panel.add(comp);
panel.revalidate();
panel.repaint();
}
// this function defines menu items and their listeners
public JMenuItem AddMenuItem(JMenu menu, String name, final JPanel toPanel) {
JMenuItem menuItem = new JMenuItem(name);
menu.add(menuItem);
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SwitchPanel(toPanel);
}
});
return menuItem;
}
然后我添加这样的菜单项;
AddMenuItem(menu1, "some menu item", new MyPersonalJPanel());
一切正常。但是我想在单击相关菜单项时创建新的 jpanel。我的意思是只在必要时创建 jpanel。当前代码首先创建所有 jpanels。当我单击一个菜单项时,显示之前创建的 jpanel。
我认为可以使用 Class.forName 方法来完成,但我想不通。有什么帮助吗?
【问题讨论】: