【发布时间】:2011-09-18 05:24:32
【问题描述】:
我正在使用 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 ...
}
从代码中可以看出,我在 CENTER 中有一个 JPanel,它几乎占据了整个屏幕。在底部我有另一个 JPanel (SOUTH),它有一排按钮。
我需要的是 CENTER 中的 JPanel 的大小。当我调用从 JPanel 继承的 getWidth()、getHeight() 或 getBounds() 方法时,由于 BorderLayout,它们都返回 0。 知道如何获得真正的价值吗?
PS:屏幕总是占据整个屏幕,并且永远不会调整大小,如果有帮助的话。
【问题讨论】: