这里可能是一个简单的问题,正在努力学习使用摆动制作GUI并取得轻微进展,但又打了另一个减速带。我试图将GUI组件分组在不同的类中以保持我的类较小并允许更灵活的GUI,但我构建了一个组件如何将其调用到我的主类。下面发布的是用于制作框架和组件的代码。我想像我打电话的方式存在问题,但是关于如何调用它的想法已经不多了。任何想法都会受到赞赏.....对于尝试将组件添加到frmMainMenu中的JFrame的问题不是很清楚,问题是该组件在当前运行时不出现在框架中
使用JFrame的主类
public class frmMainMenu {
public static void main(String main[]){
//Create Frame
JFrame frmMainMenu = new JFrame();
//Define Layout Manager
GridBagLayout gridBag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
frmMainMenu.setLayout(gridBag);
//Add Components
//Create Left Container
c.fill = GridBagConstraints.VERTICAL;
c.weighty = 1;
c.gridx = 0;
c.gridy = 1;
c.ipadx = 30;
frmMainMenu.add(new comLeftToolBar(),c);
frmMainMenu.setExtendedState(JFrame.MAXIMIZED_BOTH);
frmMainMenu.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//Display Frame
frmMainMenu.setVisible(true);
}
}
组件代码
public class comLeftToolBar extends JPanel{
public comLeftToolBar() {
JPanel comLeftContainer = new JPanel();
GridBagLayout leftGridBag = new GridBagLayout();
comLeftContainer.setLayout(leftGridBag);
GridBagConstraints b = new GridBagConstraints();
JToolBar comLeftToolBar = new JToolBar(JToolBar.VERTICAL);
b.gridx = 0;
b.gridy = 0;
b.ipady = 50;
JButton comNavButton = new JButton();
JButton comProButton = new JButton();
comLeftToolBar.add(comNavButton);
comLeftToolBar.add(comProButton);
comLeftContainer.add(comLeftToolBar,b);
comLeftContainer.setBorder(BorderFactory.createLineBorder(Color.black));
}
}
答案 0 :(得分:1)
问题是当前运行时组件没有出现在框架中
你的班级是一个小组。但随后您创建了另一个面板(comLeftContainer)并向此面板添加组件。但是,您不会向ComLeftToolBar
面板添加任何组件,因此它仍为空。
对于一个简单的解决方案,您可以在课程的底部使用:
add( comLeftContainer );
当然,这不是最好的解决方案。这将为您提供以下结构:
没有必要有这么复杂的结构。工具栏是直接添加到框架的组件。
如果您想创建一个可以添加到框架中的类,那么请查看How to Use Tool Bars上的Swing教程以获得更好的结构。