如果在屏幕设置为可见后放置,则查找JButton的位置只会给我一个值

时间:2019-03-14 06:39:10

标签: java swing jbutton

所以我基本上处于困境。我正在尝试使用.getLocation()访​​问器查找JButton的位置,但是,如果我将窗口设置为可见后才将其放置,这对我来说似乎才有效-否则,它仅将x返回0,将y返回0 。在我的特殊情况下,在将窗口设置为可见后,我无法将其放置,就好像我这样做时一样,按钮并未首先初始化。我基本上想知道它们是否是在将窗口设置为可见之前找到这些按钮的位置的访问器?这是我正在使用的将x&y返回为0的代码:

    public class Test {
    public Test() {
        JButton buttonOne = new JButton();
        JButton buttonTwo = new JButton();
        JPanel panel = new JPanel();
        JFrame window = new JFrame("Test");
        GridLayout g = new GridLayout();

        panel.add(buttonOne);
        panel.add(buttonTwo);
        panel.setLayout(g);
        System.out.println(buttonTwo.getLocation());


        window.setContentPane(panel);
        window.setSize(512, 512);
        window.setVisible(true);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
}

1 个答案:

答案 0 :(得分:0)

问题最可能不是可视性,而是还没有布局。每次添加或删除控件时,Swing布局都不会重新计算所有内容。

使窗口可见只是强制内容已被布局的一种方法。另一个人将明确呼叫pack()