1

JPanel の幅/高さ (640x480) に基づいて計算と描画を行っていますが、マウスの実際の位置を出力すると、(622x441) の実際の境界があることに気付きました。これはなぜですか、どうすれば補償できますか?

これがGamePanelの私のコンストラクタです

public GamePanel(){ 
    wallBoard = new WallBoard();
    player = new Player(100, 100);
    Map<String, GameObject> startingEquipment = new HashMap<String, GameObject>();
    startingEquipment.put("Sword and Sheild", new Sword(player.getX(), player.getY()));
    player.equip(startingEquipment);
    enemy = new Enemy(10, 10);
    objects.add(player);
    objects.add(enemy);
    mouseSelection = new MouseSelection();

    setSize(new Dimension(640, 480));
    setDoubleBuffered(true);
    setFocusable(true);
    addKeyListener(this);
    addMouseListener(this);
    addMouseMotionListener(this);

    frame = new GameFrame();
    frame.pack(); //this makes the window just the bar at the top
            //frame.setUndecorated(true); crashes the program
    frame.addKeyListener(this);
    frame.add(this);


    t = new Thread(this);
    t.start();
    hud = new HeadsUpDisplay(getWidth(), getHeight());
}
4

3 に答える 3

0

これを試してくださいhttp://www.miglayout.com/ これはあなたを助けるかもしれません。

于 2013-01-05T04:47:07.617 に答える
0

失われたマウス領域を補う1つの方法は、初期サイズに差を追加することです。したがって、幅と高さを640x480に設定する代わりに、JPanelを作成する場合は、638x519にします。

なぜそれが正確に行われるのかはわかりません。タイトルとサイドグラフィックのために、それがデメンションを取り除くと推測されますが、私は積極的ではありません。

于 2013-01-05T04:55:22.423 に答える