所以我是一个非常新的程序员,我观看了有关如何制作鼠标监听器的 YouTube 教程。我仍然对鼠标监听器是什么非常模糊,但是我的代码当前所在的位置(我主要只是从视频中复制它),背景开始为白色,当释放鼠标时,背景变为红色。
我实际上想做的是显示图像,当释放鼠标时,显示不同的图像。
我该怎么做?
这是我当前的代码:
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){
}
}
最佳答案
您声明:
- the background starts out white and when the mouse is released, the background changes to red.
- What I actually want to do is display an image, and when the mouse is released, display a different image.
然后您显示此代码:
public void mouseReleased(MouseEvent event){
mousepanel.setBackground(Color.RED);
}
<小时/>
所以你知道如何使用 MouseListener 以及代码应该在哪里进行更改,因此问题的解决方案很简单 - 而不是 mousepanel.setBackground(Color.RED);
输入代码来更改图像。但如何执行此操作的所有重要细节将取决于您的问题的详细信息,以及您未告诉我们或向我们展示的详细信息。具体比如什么图片?在哪里显示它?在鼠标发布的网站上?您知道如何显示任何图像吗?
编辑
再说一遍,您的问题的详细信息是什么?
- 除非您有多个图像并且它们很大,否则您可能希望在渲染 GUI 之前将它们读入变量中,也许是在类的构造函数中。我通常使用
ImageIO.read(...)
方法读取图像。 - 如果您的目标是在 mouseReleased 上为 GUI 提供背景图像,那么一种方法是将 JLabel 放入 JFrame 中,将图像转换为 ImageIcon,然后调用 JLabel 变量的
setIcon(myIcon)
在 mouseReleased 上,将您创建的 ImageIcon 传递到方法调用中。 - 如果您的目标完全不同,那么您将再次需要告诉我们详细信息。
关于java - 鼠标点击时显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985471/