很抱歉没有在上一篇文章中放置特定的代码。我意识到我做错了什么,但现在又遇到了另一个问题。单击按钮后,我正在尝试将 JPanel 放置在 JFrame 上的特定位置,但没有任何反应,这是我的 Actionexecute 方法的代码。
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);
}
有很多方法可以做到这一点。
使用
setLocation(x, y)
和setSize(length, width)
使用
setBounds(x, y, length, width)
如果 1 和 2 不起作用,请查看布局管理器:
我强烈建议您查看布局管理器JavaDoc.以下是每个链接的链接,我为您的情况推荐的链接旁边有一个星号(*(。
边框布局*适用于一般方向(北,南,东,西(
BoxLayout 将组件放在一行或一列中。它尊重组件请求的最大尺寸,还允许您对齐组件。
CardLayout允许您实现在不同时间包含不同组件的区域,该区域通常由组合框控制,组合框的状态决定了 CardLayout 显示哪个面板(组件组(。
FlowLayout 是每个 JPanel 的默认布局管理器。它只是在一行中布置组件。
GridBagLayout是一个复杂,灵活的布局管理器。它通过将组件放置在单元格网格中来对齐组件,从而允许组件跨越多个单元格。网格中的行可以具有不同的高度,网格列可以具有不同的宽度。
GridLayout* 只是使一堆组件的大小相等,并以请求的行数和列数显示它们。
GroupLayout 是为 GUI 构建器工具使用而开发的布局管理器,但它也可以手动使用。组布局分别使用水平和垂直布局。为每个维度单独定义布局。但是,每个组件都需要在布局中定义两次。
SpringLayout是一个灵活的布局管理器,专为GUI构建器使用而设计。它允许您指定其控制下的组件边缘之间的精确关系。例如,您可以定义一个组件的左边缘与另一个组件的右边缘保持一定距离(可以动态计算(。SpringLayout 根据一组约束布置其关联容器的子项。
免责声明:其中大多数是Oracle JavaDoc关于布局管理器的直接引用。