Java 设置JButton的位置永远不起作用?

Java 设置JButton的位置永远不起作用?,java,location,jbutton,Java,Location,Jbutton,我试图创建一个按钮并将其放置在某个位置,但由于某些原因,它从未进入该特定位置。我试着把它放在一个面板上,用背景,用设置位置。。。但它似乎不起作用 我正在另一个文件中运行此文件 public class Inventory extends JPanel { private final static int frameWidth = 200; private final static int frameHeight = 500; private final static int s

我试图创建一个按钮并将其放置在某个位置,但由于某些原因,它从未进入该特定位置。我试着把它放在一个面板上,用背景,用设置位置。。。但它似乎不起作用

我正在另一个文件中运行此文件

public class Inventory extends JPanel
{
   private final static int frameWidth = 200;
   private final static int frameHeight = 500;
   private final static int screenLocationX = 100;
   private final static int screenLocationY = 50;
   private Panel panel;
   private JFrame frame;
   private JPanel jpanel;

public Inventory()
{   
   panel = new Panel();
   frame = new JFrame();

   JButton button = new JButton("Add Gem");
   button.addActionListener(new Listener());
   button.setPreferredSize(new Dimension(frameWidth,50));
   // button.setLocation(0,400);
   // button.setBounds(0,400,frameWidth,50);

   panel.setVisible(true);

   frame.setContentPane(panel);
   frame.add(button);

   frame.setVisible(true);
   frame.setSize(frameWidth, frameHeight);
   frame.setLocation(screenLocationX, screenLocationY);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setResizable(false);
}
private class Listener implements ActionListener
{
   public void actionPerformed(ActionEvent e)
   {

      panel.addImage(new Gems());

   }
}
}

你需要关掉LayoutManager


panel.setLayout(空)

JFrame
默认情况下使用
边框布局
,默认情况下,组件添加到
边框布局.CENTER
位置,除非另有规定

在此设置中,部件将放置在框架的中心,并调整尺寸以填充框架

请记住,每个平台/操作系统呈现内容的方式不同,这些差异将改变显示组件所需的空间量,所有这些都将影响所有其他组件之间的关系

您考虑更改布局管理器并使用EMPTILLATION> /代码>和插入/填充来影响组件的位置/大小。尝试类似于

GridBagLayout
的方法,或者如果您喜欢冒险,请查看
MigLayout


使用GUI程序(几乎在任何平台上)需要学习的第一个课程之一是像素完美布局是一种错觉,有太多的变量影响内容的呈现方式,以及这些变量如何改变各个组件正确显示所需的空间量…

在将面板添加到框架之前使用: panel.setLayout(空)//将面板的默认设置设置设置为null 然后使用: 按钮.立根(300300300300)//在特定位置绑定按钮

这会有用的