java - 鼠标单击 JLabel 数组 (Java)

标签 java arrays swing jlabel mouse-listeners

我创建了一个JLabels数组,它在java上是[9][9]。当我用鼠标单击这些标签时,我想设置可见这些JLabels。有人可以帮助我吗?

I tried this:
    //labels[c][d].addMouseListener(null);
    public void mouseClicked(MouseEvent me){
    //        for(Integer i=1;i<10;i++)
    //        {
    //            for(Integer j=1;j<10;j++)
    //            {
    //               
    //                if (me.getSource()==labels[i][j]);
    //                {
    //                  
    //                    labels[1][1].setVisible(true);
    //                }
    //            }
    //       
    //    }

最佳答案

使用 JToggleButtonSwing JToolbarButton pressing所示.

在您的用例中,未选择的绿色图像将只是完全透明的图像,或者是所需 BG 颜色的图像。

更具体的例子:

Toggle Image

import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

class ToggleImage {

    public static JToggleButton getButton(
        Image selected,
        Image unselected) {

        JToggleButton b = new JToggleButton();
        b.setSelectedIcon(new ImageIcon(selected));
        b.setIcon(new ImageIcon(unselected));
        b.setBorderPainted(false);
        b.setContentAreaFilled(false);
        b.setFocusPainted(false);
        b.setMargin(new Insets(0,0,0,0));

        return b;
    }

    public static Image getImage(boolean hasSquare) {
        int size = 60;
        BufferedImage bi = new BufferedImage(
            size,size,BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = bi.createGraphics();

        if (hasSquare) {
            g.setColor(Color.RED);
            g.fillRect(1,1,size-2,size-2);
        }

        g.dispose();
        return bi;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                Image selected = getImage(true);
                Image unselected = getImage(false);

                int row = 2;
                int col = 5;
                JPanel p = new JPanel(new GridLayout(row,col));

                for (int ii=0; ii<row*col; ii++) {
                    p.add( getButton(selected, unselected) );
                }

                JOptionPane.showMessageDialog(null, p);
            }
        });
    }
}

请注意,按钮将对鼠标和键盘输入使用react,而(默认情况下)标签不会。

关于java - 鼠标单击 JLabel 数组 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10413007/

相关文章:

java - 基于 DSL 的数据过滤

java - hibernate ,双向更新

java - 私有(private)字段的序列化和反序列化

java - 这是在每个新请求上初始化一个新的 httpClient 的好习惯吗

c++ - 动态数组删除旧指针并将其设置为新数组 C++

javascript - 从数组值创建 json 对象数组

java - 如何向 JTextarea 添加文本而不删除它之前的文本? java

java - TicTacToe 游戏错误检查和类

java - JTextArea如何查找列数/行宽?

php - 查找键的数组值