-1

对不起,没有在以前的帖子中输入特定的代码。我意识到我做错了什么,但现在又遇到了另一个问题。我试图在单击按钮后在JFrame的特定位置放置一个JPanel,但没有任何事情发生,这里是我的Actionperformed方法的代码。将JPanel放在特定区域的JFrame上

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

如果你发布你的代码,我会很乐意提供帮助。 – CodingNinja

+0

@Tommy我在我的文章中添加了一些代码。我对编码相当陌生,所以任何帮助都会很棒。 –

回答

0

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

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

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

  3. 如果1和2不工作,考虑布局管理器:

我强烈建议你拿一看Layout Managers JavaDoc。下面是每个人的链接,我建议你的情况在他们旁边有一个星号(*)。

  • BorderLayout*为总体方向(北,南,东,西)

  • BoxLayout使组分在单个行或列。它尊重组件的最大尺寸,并且可以让组件对齐。

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

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

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

  • GridLayout*只是使一堆组件的大小相等,并显示在请求的行数和列数中。

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

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

声明:其中大多数是Oracle JavaDoc有关布局管理器的直接引号。