以前の経験から、誰もが「これらのsetXxxSize
方法を使用しないでください!レイアウトマネージャーを使用してください! 」と言うでしょう。しかし、この場合はどうすればよいですか?
import java.awt.*;
import javax.swing.*;
public class Game {
public static void main(String[] args) {
new Game();
}
public Game() {
JFrame f = new JFrame("Hi this is a game");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new GamePanel());
f.pack();
f.setVisible(true);
}
private class GamePanel extends JPanel {
private GamePanel() {
setPreferredSize(600, 600);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
//paint stuff
}
}
}
これは、私が実際にすばやくまとめたコードの例です。ゲームエリアを600x600にする必要がある場合は、どうすればよいですか?ここで使っても大丈夫setPreferredSize
ですか?単一のコンポーネントを取得してサイズを指定できるレイアウトマネージャーはありません。レイアウトマネージャー全体を使用する代わりに、これを使用する方がはるかに簡単ではありませんか。
ちなみに、f.setSize(600, 600)
フレームの装飾(タイトルバー、境界線など)が考慮されているため、ここでは機能しません。
したがって、問題は、特定のサイズである必要があるコンポーネントが1つしかない場合、どうすればよいかということです。