首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新JFrame绘画

更新JFrame绘画
EN

Stack Overflow用户
提问于 2014-04-17 22:49:50
回答 1查看 31关注 0票数 1

我想更新我的矩形,当我的键被按下当前,我几乎实现了

代码语言:javascript
复制
package com.raggaer.frame;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;
import javax.swing.KeyStroke;

public class Elements extends JPanel {

    private static int y = 250;

    public Elements() {

        this.getInputMap().put(KeyStroke.getKeyStroke("UP"), "up");
        this.getActionMap().put("up", new Listener("up"));
        this.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "down");
        this.getActionMap().put("down", new Listener("down"));
    }

    public void paintComponent(Graphics g) {

        super.paintComponent(g);

        g.drawRect(250, this.y, 10, 10);
    }

    public Dimension getPreferredSize() {

        return new Dimension(500, 500);
    }

    public static void setY(int cord) {

        y += cord;
            // Cant access repaint()
    }
}

这是我的听者课

代码语言:javascript
复制
package com.raggaer.frame;

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.AbstractAction;

public class Listener extends AbstractAction {

    private String code;

    //final Elements game = new Elements();

    public Listener(String order) {

        this.code = order;
    }

    public void actionPerformed(ActionEvent e) {

        System.out.println(this.code);

        Elements.setY(1);
    }
}

目前,除了我不知道如何更新矩形的y位置外,所有东西都正常工作,我尝试使用一个静态变量,但随后无法调用repaint()方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-17 22:50:51

不,..。不要使用静态的任何东西,方法或字段,因为如果这样做,您将打破面向对象的编程规则,使您的代码很难更新和维护。当然,例外是您的主要方法,以及精心选择的真正属于该类的字段和方法。相反,给需要调用元素对象方法的类提供一个对您希望更改其状态的对象、绘图JPanel或元素对象的有效引用。这可以通过通过构造函数参数传递有效的引用来实现。

代码语言:javascript
复制
public class Listener extends AbstractAction {
  private Elements elements;

  public Listener(Elements elements) {
    this.elements = elements;
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23144746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档