【发布时间】:2013-10-05 05:11:26
【问题描述】:
我试图在 java 中构建一个基本程序,它创建一个带有 JPanel 的窗口,当用户单击 JPanel 时会显示一个图像,但是当运行应用程序并单击 JPanel 时,什么都没有显示...
这里是代码...
//driver.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;
公共类 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
【问题讨论】:
-
System.out.println("Mouse Click detected");this 打印了吗? -
您是否尝试在添加标签后在面板上调用 revalidate...?
-
@porfiriopartida 是的,字符串已打印,但面板中未添加(或显示)img。
-
@MadProgrammer 我尝试在 JPanel 上使用 revalidate 但图像未显示在面板上..
-
@AdityaBhatnagar :图片不应该在
.class文件旁边,而不是在.java文件旁边。请查看此answer,了解目录结构。此外,下面答案中建议的建议值得注意,因为最好只更改图标,而不是放置新的JLabel。有关详细信息,请参阅此线程,关于如何add Images to the Project
标签: java image swing jlabel mouselistener