【问题标题】:adding multiple jPanels to jFrame将多个 jPanel 添加到 jFrame
【发布时间】:2011-09-13 14:24:26
【问题描述】:

我想将两个 jPanel 并排添加到一个 JFrame。两个框是jpanels,外框是jframe

我有这些代码行。我有一个名为 seatinPanel 的类,它扩展了 JPanel,在这个类中,我有一个构造函数和一个名为 utilityButtons 的方法,它返回一个 JPanel 对象。我希望实用程序按钮 JPanel 位于右侧。我这里的代码只在运行时显示utillityButtons JPanel。

public guiCreator()
    {
        setTitle("Passenger Seats");
        //setSize(500, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = getContentPane();

        seatingPanel seatingPanel1 = new seatingPanel();//need to declare it here separately so we can add the utilityButtons
        contentPane.add(seatingPanel1); //adding the seats
        contentPane.add(seatingPanel1.utilityButtons());//adding the utility buttons

        pack();//Causes this Window to be sized to fit the preferred size and layouts of its subcomponents
        setVisible(true);  
    }

【问题讨论】:

    标签: java swing jpanel layout-manager


    【解决方案1】:

    我推荐的最灵活的 LayoutManager 是BoxLayout

    您可以执行以下操作:

    JPanel container = new JPanel();
    container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS));
    
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    
    //panel1.set[Preferred/Maximum/Minimum]Size()
    
    container.add(panel1);
    container.add(panel2);
    

    然后将容器添加到您的框架组件中。

    【讨论】:

    • 当我尝试这样做时,它给了我这个错误 BoxLayout can't be shared
    【解决方案2】:

    您需要阅读并了解 Swing 提供的布局管理器。在您的情况下,了解 JFrame 的 contentPane 默认使用 BorderLayout 会有所帮助,您可以添加较大的中心 JPanel BorderLayout.CENTER 和另一个 JPanel BorderLayout.EAST。更多可以在这里找到:Laying out Components in a Container

    编辑 1
    Andrew Thompson 已经在他的代码中向您展示了一些关于布局管理器的内容:why are my buttons not showing up?。同样,请阅读教程以更好地理解它们。

    【讨论】:

      猜你喜欢
      • 2012-05-02
      • 2013-12-12
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多