gpt4 book ai didi

java - 如何在初始化中访问/更改变量? java

转载 作者:行者123 更新时间:2023-11-30 03:09:47 26 4
gpt4 key购买 nike

各位程序员大家好!

所以说实话,我不确定标题问题是否正确,你会明白为什么。在解释我做什么以及为什么之前,这里是代码片段:

    JPanel playerPanel = new JPanel() {    
public void paint(Graphics g) {
X = 1;
Y = 1;
g.drawImage(player.getScaledInstance(player.getHeight()/2, player.getWidth()/2, Image.SCALE_DEFAULT), X, Y, null);
}
};

所以这是我制作的自定义类的片段,我的问题是,你看到有一个 X 和 Y 变量,我可以更改它们的值,但这对实际程序的影响没有任何改变,我的第一个问题是我可以更改此 JPanel 图像的 X 和 Y,如果可以,我如何“刷新”实际的 JPanel/图像,使其看起来像移动了?

一些注意事项:

-the X, Y are global variables

-playerPanel is inside a procedure, and a global variable

-i can access X, Y since they are global variables from outside the class

我很难真正写下我的问题......希望你明白我想完成什么。

最佳答案

您的主要问题是:如果您想为类提供新的可变字段,请不要使用匿名内部类。相反,创建一个单独的类,它可以是内部类,但不能是匿名的,为其提供 getter 和 setter 所需的字段。此外,Luxx 建议的所有内容都是正确的——重写 PaintCompoent、调用 super 方法、不要在方法中声明字段...

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

public class PlayerDrawingPanel extends JPanel {
private int playerX;
private int playerY;
private Player player;

public PlayerDrawingPanel(int playerX, int playerY, Player player) {
this.playerX = playerX;
this.playerY = playerY;
this.player = player;
}

public void setPlayerX(int playerX) {
this.playerX = playerX;
repaint();
}

public void setPlayerY(int playerY) {
this.playerY = playerY;
repaint();
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(player.getImage(), playerX, playerY, this);
}
}

关于java - 如何在初始化中访问/更改变量? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33854713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com