Java 鼠标单击后如何刷新面板?

Java 鼠标单击后如何刷新面板?,java,swing,Java,Swing,我有一个用java编写的Swing游戏。游戏的类可以工作,但我在GUI类方面遇到了问题。打印方法使用对象图形作为参数,但我不知道如何使用它。以下是代码的一部分: panel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); Piece piec

我有一个用java编写的Swing游戏。游戏的类可以工作,但我在GUI类方面遇到了问题。打印方法使用对象图形作为参数,但我不知道如何使用它。以下是代码的一部分:

panel.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseClicked(MouseEvent e) {
            super.mouseClicked(e);
            Piece piece = joueur.getPosition();
            int positionClick = numberPiece(e.getX(), width) + numberPiece(e.getY(), height) * 10;
            int positionJoueur = Scenario.pieces.get(piece) - 1;
            if (positionClick==positionJoueur-1)
                joueur.deplacer('O');
            else if (positionClick==positionJoueur+1)
                joueur.deplacer('E');
            else if (positionClick==positionJoueur-10)
                joueur.deplacer('N');
            else if (positionClick==positionJoueur+10)
                joueur.deplacer('S');
            panel.updateUI();
            repaint();

        }

        private int numberPiece(int coord, int size) {
            for (int i = 1; i < 11; i++) {
                int x = i * size;
                if (coord < x) {
                    return (i - 1);
                }
            }
            return 0;
        }
    });
panel.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent e){
超级鼠标点击(e);
工件=焦耳。getPosition();
int positionClick=numberPiece(e.getX(),宽度)+numberPiece(e.getY(),高度)*10;
int positionjouer=Scenario.pieces.get(piece)-1;
如果(位置点击==位置点击-1)
拆放器(“O”);
否则如果(位置点击==位置点击+1)
转载机(E);
否则如果(位置点击==位置JOUER-10)
转载机(“N”);
否则如果(位置点击==位置点击+10)
转载机(简称“S”);
panel.updateUI();
重新油漆();
}
专用整数编号(整数坐标,整数大小){
对于(int i=1;i<11;i++){
int x=i*大小;
if(坐标

请帮帮我,谢谢。

重新绘制是正常的方式,除非您正在改变外观,否则请不要致电
updateUI
。考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将导致更少的混乱和更好的响应这里是一个窗口:单击将更改精灵的位置,调用jouer.deplacer(),这将对paintComponent产生影响。我删除了updateUI,每当我单击“无任何更改”时,都会进行更改。返回并阅读我真的不知道如何裁剪代码中有问题的部分。。。我该怎么办?这有点大,我认为问题来自于我如何使用MouseStener,如果你在这一部分中没有看到任何明显的错误,那么它可能在任何地方,但我不能完全放弃。这就是为什么你要努力创建内聚的、低耦合的代码,并且你的每个类都是可独立测试的,这一点非常重要。如果您以这种方式创建代码,那么在需要时创建代码通常是微不足道的。
repaint
是正常的方式,除非您正在更改外观,否则请不要调用
updateUI
。考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将导致更少的混乱和更好的响应这里是一个窗口:单击将更改精灵的位置,调用jouer.deplacer(),这将对paintComponent产生影响。我删除了updateUI,每当我单击“无任何更改”时,都会进行更改。返回并阅读我真的不知道如何裁剪代码中有问题的部分。。。我该怎么办?这有点大,我认为问题来自于我如何使用MouseStener,如果你在这一部分中没有看到任何明显的错误,那么它可能在任何地方,但我不能完全放弃。这就是为什么你要努力创建内聚的、低耦合的代码,并且你的每个类都是可独立测试的,这一点非常重要。如果您以这种方式创建代码,那么在需要时创建代码通常是微不足道的。