如何将图像功能添加到我的 JButtons

How to add image-functionality to my JButtons

您好,我正在开发类似应用程序的收银台,我已经创建了菜单和按钮,但是我想向我的 Jbuttons 添加特定功能,我在这里阅读了很多与此相关的问题,但是不幸的是我还没有想出一个解决方案,我想知道我怎么可能添加一些变量管理或图像更改功能到我的 Jbuttons

    import javax.swing.*;
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JButton;


class PRINCIPAL extends JFrame {
    public PRINCIPAL(){
        setResizable(false);                    //Hace que la ventana sea no modificable
        setTitle("Projecto de Cajero UTC");     //Titulo para la parte de arriba
        setSize(1020,760);                       //Tamaño de la app
        JLabel fondo;                           //Declaramos un label para el fondo
        ImageIcon inicio = new ImageIcon("src/main/java/Imagenes/MENU.png");//Añadimos un icono parra el fondo
        fondo= new JLabel("",inicio,JLabel.LEFT);//Se añade el Fondo al centro en el centro
        fondo.setBounds(50,0,550,0);          //Pixeles calculados para la posicion del fondo respecto al frame
        add(fondo);                             //Añadir
        setLocationRelativeTo(null);            //Ventana al centro
        
        
        JButton clickINICIO=new JButton("INICIO"); //Declaramos el boton
        clickINICIO.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickINICIO.setBounds(30,141,192,36);    //Tamaño del boton
        fondo.add(clickINICIO);                  //añadir
        //clickINICIO.setContentAreaFilled(false);//
        //clickINICIO.setBorderPainted(false);// TRANSPARENTE
        //clickINICIO.setOpaque(false);            ////
        //clickINICIO.setFocusable(false);////
        //clickINICIO.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        JButton clickSALDO=new JButton("SALDO"); //Declaramos el boton
        clickSALDO.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickSALDO.setBounds(30,199,191,37);    //Tamaño del boton
        fondo.add(clickSALDO);                  //añadir
        //clickSALDO.setContentAreaFilled(false);//
        //clickSALDO.setBorderPainted(false);// TRANSPARENTE
        //clickSALDO.setOpaque(false);            ////
        clickSALDO.setFocusable(false);////
        clickSALDO.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        JButton clickDEPOSITOS=new JButton("DEPOSITOS"); //Declaramos el boton
        clickDEPOSITOS.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickDEPOSITOS.setBounds(30,258,191,37);    //Tamaño del boton
        fondo.add(clickDEPOSITOS);                  //añadir
        //clickDEPOSITOS.setContentAreaFilled(false);//
        //clickDEPOSITOS.setBorderPainted(false);// TRANSPARENTE
        //clickDEPOSITOS.setOpaque(false);            ////
        clickDEPOSITOS.setFocusable(false);////
        clickDEPOSITOS.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        JButton clickRETIROS=new JButton("RETIROS"); //Declaramos el boton
        clickRETIROS.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickRETIROS.setBounds(30,316,191,37);    //Tamaño del boton
        fondo.add(clickRETIROS);                  //añadir
        //clickRETIROS.setContentAreaFilled(false);//
        //clickRETIROS.setBorderPainted(false);// TRANSPARENTE
        //clickRETIROS.setOpaque(false);            ////
        clickRETIROS.setFocusable(false);////
        clickRETIROS.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        
        
        JButton clickMOVIMIENTOS=new JButton("MOVIMIENTOS"); //Declaramos el boton
        clickMOVIMIENTOS.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickMOVIMIENTOS.setBounds(30,374,191,39);    //Tamaño del boton
        fondo.add(clickMOVIMIENTOS);                  //añadir
        //clickMOVIMIENTOS.setContentAreaFilled(false);//
        //clickMOVIMIENTOS.setBorderPainted(false);// TRANSPARENTE
        //clickMOVIMIENTOS.setOpaque(false);            ////
        clickMOVIMIENTOS.setFocusable(false);////
        clickMOVIMIENTOS.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        
        JButton clickSERVICIOS=new JButton("SERVICIOS"); //Declaramos el boton
        clickSERVICIOS.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickSERVICIOS.setBounds(30,432,191,77);//Tamaño del boton
        fondo.add(clickSERVICIOS);                  //añadir
        //clickSERVICIOS.setContentAreaFilled(false);//
        //clickSERVICIOS.setBorderPainted(false);// TRANSPARENTE
        //clickSERVICIOS.setOpaque(false);            ////
        clickSERVICIOS.setFocusable(false);////
        clickSERVICIOS.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        
        JButton clickAJUSTES=new JButton("AJUSTES"); //Declaramos el boton
        clickAJUSTES.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickAJUSTES.setBounds(30,528,191,39);//Tamaño del boton
        fondo.add(clickAJUSTES);                  //añadir
        //clickAJUSTES.setContentAreaFilled(false);//
        //clickAJUSTES.setBorderPainted(false);// TRANSPARENTE
        //clickAJUSTES.setOpaque(false);            ////
        clickAJUSTES.setFocusable(false);////
        clickAJUSTES.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        JButton clickSALIR=new JButton("SALIR"); //Declaramos el boton
        clickSALIR.setFont(new Font("Work Sans", Font.BOLD,20));//Letras
        clickSALIR.setBounds(30,586,191,39);//Tamaño del boton.
        fondo.add(clickSALIR);                  //añadir
        //clickSALIR.setContentAreaFilled(false);//
        //clickSALIR.setBorderPainted(false);// TRANSPARENTE
        //clickSALIR.setOpaque(false);            ////
        clickSALIR.setFocusable(false);////
        clickSALIR.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//Cambiar mouse al pasar el boton
        
        
    }

来自Java documentation

public JButton(String text,
       Icon icon)

Creates a button with initial text and an icon.

Parameters:
    text - the text of the button
    icon - the Icon image to display on the button

基本上,您必须在按钮实例化期间使用该构造函数。或者,您可以通过调用 setIcon method.

来扩展每个按钮构造

用法示例:

//first approach
ImageIcon imageIcon = new ImageIcon("helloWorld.png");
JButton button = new JButton("HELLO WORLD", imageIcon);

//second approach
JButton button = new JButton("HELLO WORLD");
ImageIcon imageIcon = new ImageIcon("helloWorld.png");
button.setIcon(imageIcon);