单击鼠标时显示图像?

时间:2014-06-01 23:17:54

标签: java image swing

所以我是一个非常新的程序员,我看了一个关于如何制作鼠标监听器的youtube教程。我仍然非常模糊鼠标监听器,但我的代码目前所处的位置(我主要是从视频中复制它),背景开始是白色,当鼠标释放时,背景变为红色。 / p>

我真正想要做的是显示图像,当释放鼠标时,显示不同的图像。

我该怎么做?

这是我目前的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JFrame;
import javax.imageio.*;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;


public class switchScreens extends JFrame{
    private JPanel mousepanel;
    private JLabel statusbar;

    public switchScreens(){
        super("title");

        mousepanel = new JPanel();
        mousepanel.setBackground(Color.WHITE);
        add(mousepanel, BorderLayout.CENTER);

        Handlerclass handler = new Handlerclass();
        mousepanel.addMouseListener(handler);
    }
        private class Handlerclass implements MouseListener
        {
            public void mouseClicked(MouseEvent event){
            }
            public void mousePressed(MouseEvent event){
            }
            public void mouseReleased(MouseEvent event){
                mousepanel.setBackground(Color.RED);
            }
            public void mouseEntered(MouseEvent event){
            }
            public void mouseExited(MouseEvent event){
            }       
    }

}

更新:我的新代码;单击时背景不会发生变化

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.JFrame;


public class switchScreens extends JFrame{

    private JLabel mousetest;
    ImageIcon icon = new ImageIcon("Untitled.png");

    public switchScreens(){

        mousetest = new JLabel();
        add(mousetest, BorderLayout.CENTER);

        Handlerclass handler = new Handlerclass();
        mousetest.addMouseListener(handler);
    }
        private class Handlerclass implements MouseListener
        {
            public void mouseClicked(MouseEvent event){
            }
            public void mousePressed(MouseEvent event){
            }
            public void mouseReleased(MouseEvent event){
                mousetest.setIcon(icon);
            }
            public void mouseEntered(MouseEvent event){
            }
            public void mouseExited(MouseEvent event){
            }       
    }

1 个答案:

答案 0 :(得分:2)

你声明:

  
      
  • 背景以白色开始,释放鼠标时,背景变为红色。
  •   
  • 我真正想要做的是显示图像,当鼠标被释放时,显示不同的图像。
  •   

并显示此代码:

public void mouseReleased(MouseEvent event){
    mousepanel.setBackground(Color.RED);
}

因此,您知道如何使用MouseListener以及代码应该在哪里进行更改,因此问题的解决方案很简单 - 而不是mousepanel.setBackground(Color.RED);放入代码来更改图像。但是,如何执行此操作的所有重要细节将取决于您的问题的详细信息,您未告诉我们或向我们展示的详细信息。什么形象的细节?在哪里展示?在鼠标的网站上发布了吗?你知道如何显示任何图像吗?


修改
那么,你的问题的细节又是什么?

  • 除非您有多个图像并且它们很大,否则您可能希望在渲染GUI之前将它们读入变量,可能在您的类的构造函数中。我通常使用ImageIO.read(...)方法阅读我的图像。
  • 如果您的目标是在mouseReleased上为GUI提供背景图像,那么一种方法是将JLabel放入JFrame,将Image转换为ImageIcon,然后调用JLabel变量{{1}在mouseReleased上,将您创建的ImageIcon传递给方法调用。
  • 如果您的目标完全不同,那么您再次需要告诉我们详细信息。