Я занимаюсь простой 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
Все, что вы делаете, это добавить MouseListener. Выполнение этой операции в другом потоке не будет иметь никакого значения; сам слушатель будет вызываться в потоке отправки событий. – yole
Я удалил инкремент таймера, чтобы проверить, останется ли он в цикле. Так что я неправильно использую потоки? как я должен использовать его, чем? – Zeepblok