找到JButton的位置只会在屏幕设置为可见后放置一个值

问题描述 投票:0回答:1

所以我基本上处于困境中。我正在尝试使用.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);

    }
}
java swing jbutton
1个回答
0
投票

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

使窗口可见只是强制内容布局的一种方式。另一个是明确地调用pack()

© www.soinside.com 2019 - 2024. All rights reserved.