これは、再描画しようとしている画面ですが、正しく再描画されていません。
public class arenaScreenBuild extends JPanel{
int pX=200, pY=150;
public void updateScreen(){
repaint();
}
public void paintComponent(Graphics g) {
g.drawString("x:"+pX, 535, 525);
g.drawString("y:"+pY, 535, 545);
}
public void refreshXY(int x, int y){
pX=x;
pY=y;
System.out.println("Refreshed X&Y");
updateScreen();
}
}
グラフィックを表示する画面です。実行すると、移動する(右矢印キーを押す)たびに「RefreshedX&Y」と表示されますが、updateScreen()メソッドを呼び出しても、表示されている項目は再描画されません。コードが機能した場合は、「更新されたX&Y」の後にx:XVALUE、y:YVALUEが表示されます。
public class ArenaKeys extends KeyAdapter {
arenaScreenBuild arenaBG = new arenaScreenBuild();
int xPos = 0, playerFace = 4,xPPos = 200, yPPos = 150;
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == e.VK_RIGHT) {
if (xPos <= 3250)
if (((xPos + xPPos) >= 825) && ((xPos + xPPos) <= 910)
&& (yPPos >= 170) && (yPPos <= 255)) {
} else if (((xPos + xPPos) >= 1325) && ((xPos + xPPos)<= 1410)
&& (yPPos >= 170) && (yPPos <= 255)) {
} else
xPos += 5;
}
arenaBG.refreshXY(xPPos+xPos,yPPos);
}
}
編集: *動作することがわかりましたが、私が行っていたのは、別のドローパネルの上にドローパネルを追加することでした。このコードは下のコード用であるため、下部のコードを更新できませんでした。2つをマージすることでこれを解決しました。両方のドローパネルのコード。*