如何向我的 JButtons 添加图像功能

Posted

技术标签:

【中文标题】如何向我的 JButtons 添加图像功能【英文标题】:How to add image-functionality to my JButtons 【发布时间】:2021-03-11 19:57:09 【问题描述】:

您好,我正在开发类似收银员的应用程序,我已经创建了菜单和按钮,但是我想为我的 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
        
        
    

【问题讨论】:

【参考方案1】:

来自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);

【讨论】:

以上是关于如何向我的 JButtons 添加图像功能的主要内容,如果未能解决你的问题,请参考以下文章

如何教 SpecFlow 向我的测试类添加额外的 NUnit 属性

ActionListener - 将动作添加到 JButtons 的 ArrayList

如何在不干扰本机控件的情况下向我的 HTML5 视频添加点击播放?

为什么我的JButton在放入JPanel的构造函数时不显示?

可以向我的应用程序添加“离线分析”功能吗?

如何使用 swift 将相同的背景图像添加到我的 ios 应用程序中的所有视图?