我创建了一个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);
// }
// }
//
// }
最佳答案
使用 JToggleButton
如Swing JToolbarButton pressing所示.
在您的用例中,未选择的绿色图像将只是完全透明的图像,或者是所需 BG 颜色的图像。
更具体的例子:
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/