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