我正在做一个简单的java游戏来学习它。我想要一个有方形女巫的程序,你可以点击它,它会改变颜色,比我不希望能够敲击它8秒。我知道我不会让计时器变得更高,我这样做的目的是为了检查在使用睡眠之前是否可以先退出计时器。JAVA线程似乎不工作
虽然这样做我的程序卡住了,我不能关闭它,所以我尝试线程,但它仍然无法正常工作。有人能告诉我我做错了什么吗?
import javax.swing.*;
import java.awt.*;
class ViewControll extends JFrame
{
JPanel playerPanel;
Dimension playerPlotDimension;
Plot plot00;
Thread t;
public ViewControll()
{
playerPlotDimension=new Dimension(200,200);
plot00 = new Plot(playerPlotDimension);
t= new Thread(plot00);
createAndShowGUI();
}
private void createAndShowGUI()
{
setTitle("ALPHA 0.1");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setSize(400,400);
setVisible(true);
t.start();
add(plot00);
}
public static void main(String args[])
{
new ViewControll();
}
}
在这里,第二类
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
public class Plot extends JPanel implements Runnable
{
int plotstate;
int timer;
public Plot(Dimension playerPlotDimension)
{
plotstate =0;
timer =0;
setBackground(Color.GRAY);
setPreferredSize(playerPlotDimension);
setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY,5,true));
setToolTipText("Werkt Dit?");
}
@Override
public void run()
{
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent me)
{
switch (plotstate)
{
case 0: setBackground(Color.GREEN);
plotstate = 1;
break;
case 1: setBackground(Color.DARK_GRAY);
while (timer != 8)
{
plotstate =0;
}
break;
}
}
});
}
}
你在哪里递增计时器? – Anto 2015-02-11 10:32:00
你的线程所做的就是添加一个MouseListener。在另一个线程中执行此操作不会产生任何影响;监听器本身将在事件派发线程上被调用。 – yole 2015-02-11 10:32:49
我删除了定时器增量以测试它是否会留在循环中。所以我使用线程错误?我应该如何使用它? – Zeepblok 2015-02-11 10:49:06