如何添加jlabel图像悬停?
如何添加JLabel
悬停?就像您将鼠标移动到顶部时一样,新图片将与其重叠。我知道如何使它与按钮一起工作,但是相同的技术不适用于JLabel
。有谁会引导我加入JLabel
悬停?请和谢谢。如何添加jlabel图像悬停?
package src;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/*
* @Author - 0x29A
*
*
*/
public class Jframe {
public static void main(final String args[]) {
/*
* @Images
*/
final ImageIcon icon = new ImageIcon("Data/button.png");
final JLabel label = new JLabel(icon);
final ImageIcon icon1 = new ImageIcon("Data/button1.png");
final JLabel label1 = new JLabel(icon1);
final ImageIcon icon2 = new ImageIcon("Data/button2.png");
final JLabel label2 = new JLabel(icon2);
final ImageIcon icon3 = new ImageIcon("Data/button3.png");
final JLabel label3 = new JLabel(icon3);
final ImageIcon icon4 = new ImageIcon("Data/button4.png");
final JLabel label4 = new JLabel(icon4);
final ImageIcon icon5 = new ImageIcon("Data/button5.png");
final JLabel label5 = new JLabel(icon5);
final ImageIcon icon6 = new ImageIcon("Data/background.png");
final JLabel label6 = new JLabel(icon6);
/*
* @Image Location
*/
label.setBounds(282, 255, 96, 96);
label1.setBounds(384, 255, 96, 96);
label2.setBounds(282, 153, 96, 96);
label3.setBounds(384, 153, 198, 96);
label4.setBounds(181, 152, 96, 96);
label5.setBounds(181, 255, 96, 96);
label6.setBounds(0, 0, 765, 503);
/*
* @Frame
*/
final JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(765, 503));
frame.setLayout(null);
frame.add(label);
frame.add(label1);
frame.add(label2);
frame.add(label3);
frame.add(label4);
frame.add(label5);
frame.add(label6);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
可以使用MouseEntered
鼠标事件对于这一点,写这样的代码 JLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("image location")));
+1只有在我发布我的答案后才看到。好建议:) – 2012-07-26 22:27:12
exex,谢谢! – 0x29A 2012-07-26 22:36:09
做了一个简单的例子,它采用了MouseListener
和MosueAdapter
来监视JLabel
mouseExited()
和mouseEntered()
事件,并且在任这些方法被称为(即,当鼠标在标签上或不在标签上时)图片被改变:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.MouseAdapter;
import javax.swing.*;
public class LabelHoverTest extends JFrame {
Icon pic1;
Icon pic2;
JLabel label;
public LabelHoverTest(String title) {
super(title);
pic1 = UIManager.getIcon("OptionPane.informationIcon");
pic2 = UIManager.getIcon("OptionPane.questionIcon");
createAndShowUI();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LabelHoverTest("Label Hover Test").setVisible(true);
}
});
}
private void createAndShowUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
addComponentsToPane(getContentPane());
setSize(300, 300);
setLocationRelativeTo(null);
setVisible(true);
}
private void addComponentsToPane(Container contentPane) {
label = new JLabel(pic1);
contentPane.add(label, BorderLayout.CENTER);
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(java.awt.event.MouseEvent evt) {
label.setIcon(pic2);
}
@Override
public void mouseExited(java.awt.event.MouseEvent evt) {
label.setIcon(pic1);
}
});
}
}
I首先学习如何使用MouseListener和MouseMotionListener,[this](http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html)和[this](http:// docs .oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.html)教程可以提供帮助。你有没有尝试过任何东西? – 2012-07-26 22:06:33
感谢您的支持,但问题是我不知道如何将这些代码与我拥有的代码一起使用。你可以通过为我的一个标签添加一个鼠标事件来启动我,然后我可以按照你的做法自行添加其他内容吗?这真的很感谢。 – 0x29A 2012-07-26 22:10:48
我的理念是,如果你至少先给自己一个首选,那么你会获得更多***。此外,我们可以通过查看您可能有哪些不正确的假设来更好地帮助您。最后,你没有失去尝试。 – 2012-07-26 22:17:11