Java 如何在屏幕上放置事件的图像?

Java 如何在屏幕上放置事件的图像?,java,eclipse,image,swing,events,Java,Eclipse,Image,Swing,Events,我想在事件发生时在屏幕上添加一个图像。在我的情况下,这将是从一个按钮被点击。我试图自己解决这个问题,但图像没有出现。我不知道怎么了 我的代码: JButton button2 = new JButton("+"); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //Execute when button is presse

我想在事件发生时在屏幕上添加一个图像。在我的情况下,这将是从一个按钮被点击。我试图自己解决这个问题,但图像没有出现。我不知道怎么了

我的代码:

JButton button2 = new JButton("+");
button2.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e)
    {
        //Execute when button is pressed
        System.out.println("button #2 working");
        label2 = new JLabel(new ImageIcon(this.getClass().getResource("50.png")));      
        label2.setLocation(10, 60);
        label2.setSize(300, 532);
        add(label2);
        //? Not working 
    }
}); 

button2.setSize(50, 40); 
button2.setFont(new Font("Arial", 1, 20));
button2.setLocation(110, 592);
button2.setBackground(Color.ORANGE);
content.add(button2);

事实上,我做了一些类似于你想要实现的事情。然而,我通过使用不同的方法实现了这一点。例如,您可以创建一个类MyPanel,该类扩展JPanel并重写paintComponent()方法。在paintComponent()方法中,可以调用g.drawImage(yourImage,0,0,null);将图像添加到面板中。然后就是创建MyPanel的一个实例,并将其添加到GUI上任何需要的地方。另外,单击按钮后不要忘记调用repaint(),否则将看不到更改。

尝试添加
revalidate()你的评论在哪里?不工作
revalidate()只处理更新布局,而repaint()则处理重新绘制或刷新视图(组件)。要对此进行快速类比,可以使用一个简单的JTextField。无论何时在文本字段中键入内容,Swing都会自动为您调用repaint(),以便刷新或重新绘制组件,以查看更改(即键入的字符),我想出了一个简单的解决方案。我在屏幕上放置了一个图像,并将其设置为不可见。图1.setVisible(假);单击按钮时,图像将显示为image1.setVisible(true);