将JPanels放在特定区域的JFrame上

时间:2017-07-07 18:15:16

标签: java swing user-interface layout-manager null-layout-manager

很抱歉没有在之前的帖子中添加特定代码。我意识到我做错了什么,但现在又遇到了另一个问题。我试图在单击按钮后将Jarame放置在JFrame上的特定位置,但没有发生任何事情,这是我的Actionperformed方法的代码。

public void actionPerformed(ActionEvent e) 
    {


          JPanel pa=new JPanel();
          frame.getContentPane().setLayout(null);
          pa.setBackground(Color.yellow);
          pa.setLocation(50,150);
          pa.setSize(150,100);
          pa.setBounds(50,150,150,100);
          pa.setOpaque(true);
          frame.add(pa);


    }                        

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。

  1. 使用setLocation(x, y)setSize(length, width)

  2. 使用setBounds(x, y, length, width)

  3. 如果1和2不起作用,请查看布局管理器:

  4. 我强烈建议您查看Layout Managers JavaDoc。下面是每一个的链接,我建议你的案例旁边有一个星号(*)。

    • BorderLayout*用于一般指示(北,南,东,西)

    • BoxLayout将组件放在一行或一列中。它尊重组件'请求最大尺寸,并允许您对齐组件。

    • CardLayout允许您在不同时间实现包含不同组件的区域,通常由组合框控制,组合框的状态确定CardLayout显示哪个面板(组件组)。

    • FlowLayout是每个JPanel的默认布局管理器。它只是将组件放在一行中。

    • GridBagLayout是一个复杂,灵活的布局管理器。它通过将组件放置在单元格网格中来对齐组件,从而允许组件跨越多个单元格。网格中的行可以具有不同的高度,并且网格列可以具有不同的宽度。

    • GridLayout*只会使一堆组件大小相等,并以请求的行数和列数显示它们。

    • GroupLayout是为GUI构建器工具开发的布局管理器,但也可以手动使用。 GroupLayout分别使用水平和垂直布局。为每个维度单独定义布局。因此,每个组件都需要在布局中定义两次。

    • SpringLayout是一个灵活的布局管理器,专为GUI构建器使用而设计。它允许您指定其控制下的组件边缘之间的精确关系。例如,您可以定义一个组件的左边缘是从第二个组件的右边缘开始的某个距离(可以动态计算)。 SpringLayout根据一组约束条件列出其关联容器的子项。

    免责声明:其中大多数是关于布局管理器的Oracle JavaDoc的直接引用。