在Java中向JPanel添加特定图像

在Java中向JPanel添加特定图像,java,image,swing,user-interface,Java,Image,Swing,User Interface,因此,我想根据JavaSwing中当前选择的滚动列表绘制一幅图像。最好的方法似乎是在面板上添加标签。我尝试了多种不同的方法来实现这一点,但就我的一生而言,我不明白为什么它不会显示图像。这是我迄今为止所做工作的一个片段 private void jList1MouseClicked(java.awt.event.MouseEvent evt) { ImageIcon greenDragon = new Ima

因此,我想根据JavaSwing中当前选择的滚动列表绘制一幅图像。最好的方法似乎是在面板上添加标签。我尝试了多种不同的方法来实现这一点,但就我的一生而言,我不明白为什么它不会显示图像。这是我迄今为止所做工作的一个片段

private void jList1MouseClicked(java.awt.event.MouseEvent evt) {                                    

        ImageIcon greenDragon = new ImageIcon("C:\\Users\\Ilmari\\Documents\\NetBeansProjects\\GUI harkkatyö\\src\\Ile\\Green_dragon.png");
        JLabel dragon = new JLabel();
        dragon.setIcon(greenDragon);
        String selectedMonster = jList1.getSelectedValue();

        if(selectedMonster.equals("Green Dragon")){
            jPanel1.add(dragon);
        }
        else if(selectedMonster.equals("Black Demon")){
    }
}                          

到目前为止,最好的结果是完全覆盖背景JLabel图像,只显示带有图像的白色框。

如果图像根本不显示。您需要重新验证并重新绘制框架

要实现这一点,请将其添加到代码中:

frame.getContentPane().validate();
frame.getContentPane().repaint();
此标签应声明为类的属性,并在首次创建时添加到GUI中。然后在jList1MouseClicked方法中,只需调用dragon.setIcon

这样就不需要在每次图像更改时重新验证GUI


关于jList1MouseClicked主题:使用用于JList的。ListSelectionListener将对键盘输入和鼠标输入做出反应,并提供除此之外的其他优势。

您的重新绘制方法在哪里?这就是图像应该显示的地方。实际上我没有,我需要调用类似JPanel.repaint的东西吗;每次我修改图像?如果您使用JPanel编程,您应该使用自己编写的已定义的重绘方法
JLabel dragon = new JLabel();