我正在使用Swing和AWT(用于监听器)制作一个小程序。我遇到了一个问题,即如何获取我的JPanel(名为Chess的类)的大小。 我的布局:
public class Main extends JFrame implements MouseListener, ActionListener{
Chess chessPanel = new Chess ();
JButton newGameButton = new JButton ("New Game");
JButton loadGameButton = new JButton ("Load Game");
JButton saveGameButton = new JButton ("Save Game");
JButton exitButton = new JButton ("Exit");
public static void main (String [] args) {
new Main();
}
Main () {
super ("Chess");
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setSize(dim);
setLocation(0,0);
setUndecorated(true);
chessPanel.addMouseListener(this);
add(chessPanel, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
newGameButton.addActionListener(this);
loadGameButton.addActionListener(this);
saveGameButton.addActionListener(this);
exitButton.addActionListener(this);
buttonPanel.add(newGameButton);
buttonPanel.add(loadGameButton);
buttonPanel.add(saveGameButton);
buttonPanel.add(exitButton);
add(buttonPanel, BorderLayout.SOUTH);
setVisible(true);
}
// ... Code ...
}
代码中可以看到,我有一个JPanel位于CENTER位置,几乎占据了整个屏幕。在底部,我有另一个JPanel(SOUTH),其中包含一排按钮。
我需要获取JPanel在CENTER位置所占的大小。当我调用从JPanel继承的getWidth()、getHeight()或getBounds()方法时,它们都返回0,因为BorderLayout的原因。有没有办法获取实际值?
PS:屏幕始终占据整个屏幕,并且不会被重新调整大小,如果这有帮助的话。