0

ボタンを押している間 JPanel を動かし、ボタンを離すと停止する方法を教えてください。Runnable などで thread.start() を使用してみました。私はいつもエラーに遭遇します。誰でも私を助けることができますか?

4

3 に答える 3

-1

このようなものは、あなたがやりたいことをするかもしれません:

含むクラスを持っている

private JPanel movingJPanel = new JPanel(); // Declare this however

public void paint(Graphics g) {
    //draw background first
    Point drawAt;
    syncronised (sync) {
        drawAt = this.drawAt
    }
    Dimension size = movingJPanel.getPreferredSize();
    Graphics paintWith = g.create(movingJPanel);
    movingJPanel.paint(paintWith);
}

private Point moveFrom = new Point(0, 0);
private Point moveTo = new Point(100, 100);    
private Point drawAt = new Point(0, 0);
private int steps = 35;
private int step = 0;
private long timeBetweenSteps = 50L;
private Object sync = new Object();
private boolean moving = false;

private Thread thread = new Thread(new Runnable() {
    public void run() {
        while (!Thread.interrupted()) {
            synchronized(sync) {
                if (moving && step < steps) {
                    step++;
                    drawAt = new Point((moveTo.x - moveFrom.x) * step / steps,
                            (moveTo.y - moveFrom.y) * step / steps)
                    drawMovingPanelIn.repaint();
                    sync.wait(timeBetweenSteps);
                }
            }
        }
    }
});

public void start() {
    synchronized(sync) {
        moving = true;
        sync.notify();
    }
}

public void start() {
    synchronized(sync) {
        moving = false;
    }
}

public void reset() {
    syncronized(sync) {
        steps = 0;
    }
}

および含むコンストラクター

thread.start();

次に、ボタンに追加する MouseListener の mousePressed メソッドと mouseRelaesed メソッドから メソッドstart()とメソッドを呼び出します。stop()

于 2013-08-13T22:08:03.303 に答える