私はスイングとAWT(リスナー用)を使って小さなプログラムを作っています。 JPanel(Chessというクラス)のサイズを取得することに問題があります。 マイレイアウト:Java、BorderLayout.CENTER、JPanelの幅と高さを取得
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の1のJPanelを、持っています。一番下には別のJPanel(SOUTH)があります。これにはボタンの行があります。
私が必要とするのは、CENTERのJPanelのサイズです。 JPanelから継承したgetWidth()、getHeight()またはgetBounds()メソッドを呼び出すと、BorderLayoutが原因ですべてが0を返します。 実際の値を取得する方法はありますか?
PS:画面は常に画面全体を占有しますが、それでも画面サイズが変更されることはありません。
@Hidde:どういたしまして! –