我希望jpanel1不可见,直到其中一个jlabel被鼠标悬停。然后JPanel1必须变为可见,并且JLable(称为jLabel1)必须将其图像设置为正被鼠标悬停的JLabel之一。
public GUI()
{
initComponents();
jPanel1.setVisible(false);
for(int i =4; i<12;i++)
{
JLabel l = new JLabel();
l.setIcon(new ImageIcon(i+".jpg"));
p1.add(l);
}
for(int i =12; i<20;i++)
{
JLabel l = new JLabel();
l.setIcon(new ImageIcon(i+".jpg"));
p2.add(l);
}
}
下面是我程序的2张图片的链接,一张在设计视图中显示侧面板,另一张在实际程序运行时。当用户将鼠标悬停在图片网格中的一个jlabel上时,我希望左边的JPanel可见(参见运行程序的屏幕截图)。左侧面板顶部的jLabel必须将其图像设置为用户将鼠标悬停在图像网格中的图像。
答案 0 :(得分:1)
我认为你在JLabel网格中有一个缩略图 ImageIcons的网格,并且你想在网格的左边显示一个更大的缩略图。如果是这样的话:
setIcon(...)
显示它。 修改强>
您在评论中说明:
我知道这是如何工作的,虽然我不知道如何获得合适的图像图标,因为右边当前有图片的所有JLabel都被命名为相同的名字(来自我的for循环)。我如何获得单独的JLabel信息(在这种情况下是JLabel的ImageIcon。
请理解变量名称并不是那么重要,而重要的是对象引用。一种可能的解决方案是创建一个Map,例如HashMap<Icon, Icon>
。如果这样做,您可以将每个小缩略图ImageIcon与其较大的ImageIcon相关联。然后在MouseMotionListener中,获取鼠标通过(JLabel) getSource()
输入的标签,通过getIcon()
获取其缩略图图标,如果不是null(选中!),请使用您的地图获取与之关联的较大图标用缩略图。