这可能是一个简单的问题,致力于学习使用 swing 制作 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));
}
}
最佳答案
issue is that the component doesn't appear in the Frame when run currently
您的类(class)是一个小组。但随后您创建另一个面板 (comLeftContainer) 并向该面板添加组件。但您没有向 ComLeftToolBar
面板添加任何组件,因此它保持为空。
对于一个简单的解决方案,您可以在类的底部使用:
add( comLeftContainer );
当然这不是最好的解决方案。这将为您提供以下结构:
- J面板
- J面板
- J工具栏
- 按钮
- 按钮
- J工具栏
- J面板
没有必要有这么复杂的结构。工具栏是直接添加到框架的组件。
如果您想创建一个可以添加到框架中的类,请查看 How to Use Tool Bars 上的 Swing 教程。以获得更好的结构。
关于java - 不同类的 Swing 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17204148/