如何在java中确定JButton的坐标

时间:2014-12-23 09:18:59

标签: java

public MainFrame() {
    JFrame frame = new JFrame("BoolPegia");
    frame.setTitle("Background Color for JFrame");
    frame.setSize(400,400);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLayout(new BorderLayout());
    JLabel background=new JLabel(new ImageIcon("F:\\photosForJava\\unnamed.png"));
    frame.add(background);
    background.setLayout(new FlowLayout());
    JButton startPlay=new JButton("Start play!");
    startPlay.addActionListener(this);
    startPlay.setBounds(100, 50, 100,50); //here I am trying something, not working
    background.add(startPlay);
    frame.setSize(399,399);
    frame.setSize(400,400);
}

我正在尝试确定startPlay按钮的坐标..这不起作用。 帮助

4 个答案:

答案 0 :(得分:0)

要根据您的坐标将控件放在框架上,您需要将框架的布局设置为null。替换以下行:

frame.setLayout(new BorderLayout());

跟随并再试一次

frame.setLayout(null);

Note:现在您需要为每个控件提供坐标。

答案 1 :(得分:0)

您不需要设置Frame布局,通过删除此行将标签布局设置为null。

background.setLayout(new FlowLayout());

如果你想知道Button位置,可以使用uisng getX()和getY()

  System.out.println(startPlay.getX() + ", " + startPlay.getY());

答案 2 :(得分:0)

试试这个,它会更改按钮的大小,但不会更改其坐标。因为坐标是由LayoutManager设置的,即背景的FlowLayout()

startPlay.setPreferredSize(new Dimension(50,30));

额外:建议使用布局,因为当帧重新调整大小时,LayoutManager会相应地调整组件。如果您执行setLayout(null),则表示用户不应为此setResizable(false)无响应的用户界面重新调整框架大小,在我看来,它仅适用于小型和静态框架

答案 3 :(得分:0)

如果它只是你需要的Button的位置,你可以通过getLocation()和getLocationOnScreen()JButton方法(来自Component超类)获得它。

如果你想自己布局你的按钮,你必须将布局管理器设置为null并通过setLocation(Point)自己设置你的组件的位置,但这是一个不好的做法。