gpt4 book ai didi

java - 如何在 mouseReleased 事件的情况下将图像添加到 JPanel

转载 作者:行者123 更新时间:2023-11-30 09:17:12 26 4
gpt4 key购买 nike

我试图用 java 构建一个基本程序,它创建一个带有 JPanel 的窗口,当用户点击 JPanel 时会显示图像,但是当运行应用程序并点击 JPanel 时,没有任何显示...

这里是代码...

//驱动.java

import javax.swing.JFrame;

public class driver {

public static void main(String[] args) {
Gui obj = new Gui();
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
obj.setSize(400, 400);
obj.setVisible(true);
}
}

//GUI.java
import javax.swing.*;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class Gui extends JFrame{

public JPanel panel;
public ImageIcon img;

public Gui(){
panel = new JPanel();
panel.setBackground(Color.DARK_GRAY);
img = new ImageIcon("cross.png");
panel.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
panel.add(new JLabel(img));
System.out.println("Mouse Click detected");
}}
);
add(panel);
}
}

//更新了 Gui.java

import javax.swing.*;    
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

公共(public)类 Gui 扩展了 JFrame{

public JPanel panel;
public ImageIcon img;
public final JLabel label;

public Gui(){
panel = new JPanel();
label = new JLabel();
panel.add(label);

img = new ImageIcon(getClass().getResource("res/cross.png"));
panel.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
label.setIcon(img);
System.out.println("Mouse Click detected");
}}
);
add(panel);
}

注意:我的项目是这样的 organised

最佳答案

改变..

    // ..
panel.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
panel.add(new JLabel(img));
System.out.println("Mouse Click detected");
}}
);

致(类似 - 未经测试):

    // ..
final JLabel label = new JLabel();
panel.add(label);
panel.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
label.setIcon(img);
System.out.println("Mouse Click detected");
}}
);

这是 ImageViewer 中使用的基本技术,尽管它会在 Swing Timer 上更改图像,而不是鼠标单击。


当然,使用 JButton 图标比使用 JLabel/MouseListener 更容易。 JButton 不需要任何监听器来更改图标,并且适用于鼠标和键盘 Activity 。例如。如 this answer 中所示.


img = new ImageIcon("cross.png");

到部署时,这些资源可能会变成 .

在这种情况下,必须通过 URL 而不是 File 来访问资源。查看info page对于标签,对于形成 URL 的方法。

关于java - 如何在 mouseReleased 事件的情况下将图像添加到 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com