Я делаю игру с реакцией времени, когда кнопка станет зеленой, и вы должны ударить ее как можно быстрее, но кнопка не изменит цвета. Может кто-нибудь сказать мне, почему это происходит? Кроме того, как я могу заставить свою программу ждать до случайного времени (метод ниже), а затем изменить цвет? Я попытался использовать Thread.sleep, но не смог заставить его функционировать должным образом.Цвет JButton не изменится
mport java.awt.Color;
import java.util.Random;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Game extends JFrame implements ActionListener {
double start = System.nanoTime();
double end;
String startTime = String.valueOf(start);
String endTime = String.valueOf(end);
private JTextField displayTime = new JTextField(15);
private JButton stopButton = new JButton("STOP");
DecimalFormat deci = new DecimalFormat();
Font f = new Font("ARIAL", Font.BOLD, 25);
public Game() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
deci.setMaximumFractionDigits(4);
deci.setMinimumFractionDigits(1);
stopButton.addActionListener(this);
stopButton.setPreferredSize(new Dimension(250, 250));
stopButton.setFont(f);
stopButton.setBackground(Color.red);
add(displayTime);
add(stopButton);
pack();
setVisible(true);
waitRandom();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == stopButton) {
end = System.nanoTime();
double time = end - start;
double seconds = time/Math.pow(10, 9);
String finalTime = String.valueOf(deci.format(seconds));
displayTime.setFont(f);
displayTime.setAlignmentX(LEFT_ALIGNMENT);
displayTime.setText(finalTime + " sec.");
}
}
public void waitRandom() {
Random random = new Random();
int randomNumber = random.nextInt(10);
int randomTime = randomNumber * 100;
stopButton.setBackground(Color.green);
stopButton.setOpaque(true);
System.out.println(randomTime);
}
}
Работает ли 'Println()' заявление? – APerson
Я не вижу здесь никакого ожидающего кода. – immibis
@APerson Да, это так, я просто должен был подтвердить, что номер действительно случайный. Я использовал это в методе Thread.sleep(), чтобы сделать время, когда вам нужно щелкнуть кнопку случайным образом. –