Сделать, чтобы на кнопку можно было нажать только один раз JFRAME

package org.example;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static JButton jButton_dowhload = new JButton("Dowhload PDF");
    public static JButton jButton_next = new JButton("Next");
    public static JButton jButton_back =  new JButton("Back");

    public static  JFrame jFrame = new JFrame();
    public static void main(String[] args) {

        frame();

        }


        public static void frame(){
           jFrame.setSize(500,500);
           jFrame.setResizable(false);
           jFrame.setLocationRelativeTo(null);
           JPanel jPanel  = new JPanel();
           jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.X_AXIS));
           JButton jButton = new JButton("Компьютерная литература");


           jButton.addActionListener(new ActionListener() {
               @Override
               public void actionPerformed(ActionEvent e) {
                   ImageIcon imageIcon = new ImageIcon("E:\\Project_Java\\Library_java\\untitled\\src\\image\\018ee4da-770c-70dc-ab06-04a274c701a8.jpg");
                   JFrame jFrame1 = new JFrame();
                   JLabel jLabel = new JLabel("ХАКИНГ на примерах. Уязвимости, взлом, защита",imageIcon,FlowLayout.LEFT);
                   JPanel jPanel1 = new JPanel();
                   jFrame1.setSize(500,500);
                   jFrame1.setResizable(false);
                   jFrame1.setLocationRelativeTo(null);
                   jPanel1.add(jButton_dowhload);
                   jPanel1.add(jButton_next);
                   jPanel1.add(jButton_back);
                   jPanel1.add(jLabel);
                   jFrame1.add(jPanel1);
                   jFrame1.setVisible(true);
               }
           });
            jFrame.add(jPanel);
            jPanel.add(jButton);
           jFrame.setVisible(true);

        }
    }



Ответы (1 шт):

Автор решения: AP-JavaCod

При нажатии на кнопку нужно вызвать у этой кнопки метод jButton.setEnabled(false);

Улучшение кода для Java 8 и выше интервей ActionListener является функционалным поэтому можно использовать лямбда вырожение

jButton.addActionListener( _ ->{
    ImageIcon imageIcon = new ImageIcon("E:\\Project_Java\\Library_java\\untitled\\src\\image\\018ee4da-770c-70dc-ab06-04a274c701a8.jpg");
    JFrame jFrame1 = new JFrame();
    JLabel jLabel = new JLabel("ХАКИНГ на примерах. Уязвимости, взлом, защита",imageIcon,FlowLayout.LEFT);
    JPanel jPanel1 = new JPanel();
    jFrame1.setSize(500,500);
    jFrame1.setResizable(false);
    jFrame1.setLocationRelativeTo(null);
    jPanel1.add(jButton_dowhload);
    jPanel1.add(jButton_next);
    jPanel1.add(jButton_back);
    jPanel1.add(jLabel);
    jFrame1.add(jPanel1);
    jFrame1.setVisible(true);
    jButton.setEnabled(false); //делает кнопку неактивной
});

Функциональнй интервейс - это интерфейс в котором есть только один абстрактный метод.

Про лямбда функции

→ Ссылка