button1.setButton(false) не будет связываться с другим моим кодом

#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 перед его использованием. Поэтому попробуйте переместить эти несколько строк куда-нибудь перед строкой таймера.