java - 不同类的 Swing 组件

标签 java swing constructor components packaging

这可能是一个简单的问题,致力于学习使用 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工具栏
        • 按钮
        • 按钮

没有必要有这么复杂的结构。工具栏是直接添加到框架的组件。

如果您想创建一个可以添加到框架中的类,请查看 How to Use Tool Bars 上的 Swing 教程。以获得更好的结构。

关于java - 不同类的 Swing 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17204148/

相关文章:

java - Swing:JScrollPane 导致渲染问题

java - Spring Boot 在测试中不 Autowiring 类

java - Docx4J(Android):如何在Word文档中读取页眉和页脚的内容

java - JSpinner 默认更改年而不是天

Python3 : Base Constructor getting called implicitly

c# - 通过构造函数链传递 IDisposable 对象

java - 修补 Java 软件

java - 创建部分为虚线和部分为实线的边框

java - 将自定义属性添加到 JTree 并打印它

c++ - 使用相同的参数调用基类的 C++ 构造函数