【问题标题】:Adding a certain image to a JPanel in Java在 Java 中将某个图像添加到 JPanel
【发布时间】:2018-01-14 20:58:32
【问题描述】:

所以,我想根据 java Swing 中滚动列表的当前选择来绘制图像。似乎最好的方法是向面板添加标签。我尝试了多种不同的方法来做到这一点,对于我的生活,我无法弄清楚为什么它不会显示图像。这是我到目前为止所做的工作的一个简单介绍。

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 图像,并且只显示一个带有图像的白框。

【问题讨论】:

  • 你的重绘方法在哪里?那就是应该显示图像的地方
  • 我实际上没有,我需要调用类似 JPanel.repaint();每次我修改图像?
  • 如果您使用 JPanel 进行编程,您应该定义一个自己编写的重绘方法

标签: java image swing user-interface


【解决方案1】:
JLabel dragon = new JLabel();

这个标签应该被声明为类的一个属性,并在第一次制作时添加到 GUI 中。然后在jList1MouseClicked 方法中,只需调用dragon.setIcon(..)

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

关于jList1MouseClicked 的主题:使用most optimized listener 作为JListListSelectionListener 将对键盘输入和鼠标输入做出反应,并提供其他优势。

【讨论】:

    【解决方案2】:

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

    要实现这一点 - 将其添加到您的代码中:

    frame.getContentPane().validate();
    frame.getContentPane().repaint();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-02
      • 2012-07-12
      • 2015-06-18
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2017-09-07
      相关资源
      最近更新 更多