#java #swing
#java #swing
Вопрос:
Объяснение: Привет, я создаю свою игру-кликер, и я не могу понять, почему мой button1.setEnabled(false); код не будет ссылаться на мой JButton button1 = new JButton(«Уровень хакера: «); . Я использую две кнопки. Первая кнопка запускает таймер и подсчитывает количество нажатий / нажатий пробела. По истечении 10 секунд кнопка отключается. Вторая кнопка сбрасывает количество нажатий и включает первую кнопку.
Проблема: из-за того, что я использую две разные кнопки, мне приходится использовать JButton, и это не приведет к его связыванию с button1.setEnabled(false); код. Как я могу его связать?
когда таймер закончится, установите button1 для отключения скриншота . скриншот button1 Это та часть кода, которая является проблемой:
public TestPane() {
new GridLayout(0, 1); // 0 rows, 1 column
timer = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (startTime < 0) {
startTime = System.currentTimeMillis();
}
long now = System.currentTimeMillis();
long clockTime = now - startTime;
if (clockTime >= duration) {
clockTime = duration;
timer.stop();
**button1.setEnabled(false);**<<<<<<<<<<<<<<<<<<<<
}
SimpleDateFormat df = new SimpleDateFormat("mm:ss.SSS");
label.setText(df.format(duration - clockTime));
}
});
timer.setInitialDelay(0);
// / label wrapper / TITLE
label = new JLabel("Hacker GUI v1", JLabel.CENTER); // label text
label.setFont(new Font("Roboto", Font.PLAIN, 20)); // font size
add(label); // add the label
// / label wrapper /
// / label wrapper / DESCRIPTION
label = new JLabel("To hack, click on the button or press space while on the window.", JLabel.CENTER); // text label
label.setFont(new Font("Roboto", Font.PLAIN, 15)); // font size
label.setHorizontalTextPosition(JLabel.CENTER);
add(label); // add the label
// / label wrapper /
// / button wrapper / BUTTON PLAY
Dimension d = new Dimension(215, 30); // first number is length (left to right), second number is heigh (top to bottom).
**JButton button1 = new JButton("Hacker Level: "); // button text**<<<<<<<<<<<<
button1.setPreferredSize(d); // size of button relitive to dimension d
button1.setFont(new Font("Roboto", Font.PLAIN, 15)); //font size of button
button1.addActionListener( new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
count ; //count in positive integers
button1.setText("Hacker Level: " count); //text change when action preformed
if (!timer.isRunning()) {
startTime = -1;
timer.start();
}
}
});
add(button); //add the button
// / button wrapper /
// / button wrapper / BUTTON RESET
Dimension a = new Dimension(215, 30); // first number is length (left to right), second number is heigh (top to bottom).
JButton button2 = new JButton("Reset Score"); // button text
button2.setPreferredSize(a); // size of button relitive to dimension d
button2.setFont(new Font("Roboto", Font.PLAIN, 15)); //font size of button
button2.addActionListener( new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
count ; //count in positive integers
button1.setText("Hacker Level: " count); //text change when action preformed
button1.setEnabled(true);
}
});
add(button); //add the button
// / button wrapper /
Ответ №1:
JButton button1 = new JButton("Hacker Level: ");
Вы определяете локальную переменную. Локальная переменная не может использоваться в других методах.
Вам нужно определить «button1» как переменную экземпляра (так же, как вы определяете свои метки):
button1 = new JButton("Hacker Level: ");
Комментарии:
1. Спасибо, это сработало! Я также добавил эти две строки кода: private JButton button1; private JButton button2;
Ответ №2:
Вам необходимо объявить и настроить button1 перед его использованием. Поэтому попробуйте переместить эти несколько строк куда-нибудь перед строкой таймера.