我正在做一個簡單的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