所以我基本上处于困境中。我正在尝试使用.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);
}
}
这很可能不是问题的可见性,而是还没有布局。每次添加或删除控件时,Swing布局都不会重新计算所有内容。
使窗口可见只是强制内容布局的一种方式。另一个是明确地调用pack()
。