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