【问题标题】:How to add jlabel image hovering?如何添加jlabel图像悬停?
【发布时间】:2012-07-26 22:02:35
【问题描述】:

我将如何添加JLabel 悬停?就像当您将鼠标移到 JLabel 顶部时一样,新图像将与它重叠。我知道如何使它与按钮一起使用,但同样的技术不适用于JLabels。有人会指导我添加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);
    }
}

【问题讨论】:

  • 我将从学习如何使用 MouseListener 和 MouseMotionListener 开始,thisthis 教程可以提供帮助。你有没有尝试过?
  • 谢谢你,但问题是我不知道如何使用我拥有的代码。您能否通过为我的一个标签添加鼠标事件来开始我的工作,然后我可以按照您的操作方式自行添加其余的?那真是太感谢了。
  • 我的理念是,如果您至少自己先尝试一下,您将获得很多更多。此外,通过查看您可能有哪些不正确的假设,我们将能够更好地帮助您。最后,您不会因为尝试而失去任何东西。
  • 充满鳗鱼的气垫船,也谢谢你的帮助:)

标签: java swing jframe jlabel imageicon


【解决方案1】:

举个简单的例子,它使用MouseListenerMosueAdapter 来监视mouseExited()mouseEntered() 上的JLabel 事件,以及当这些方法中的任何一个被调用时(即当鼠标悬停在标签与否)图片已更改:

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);
            }
        });
    }
}

【讨论】:

  • +1 个例子; UIManager.getIcon,显示为here,可能更自给自足; pack()?
  • @trashgod 美丽,将其添加到我的答案中:)
【解决方案2】:

您可以为此使用MouseEntered 鼠标事件并编写此代码 JLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("image location")));

【讨论】:

  • +1 仅在我发布答案后才看到。好建议:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多