使用JLabel添加图片时遇到的java问题
我正在为我的高中计算机科学课做最后一个项目(一个非常平庸的口袋妖怪游戏),我有一个switch语句的问题,我添加了一个带有图像图标的Jlabel
当我运行驱动程序并打开此面板时,它应该添加一个随机对手,这就是switch语句的目的,它根据对手是谁给oppHP变量一个值。底部的PaintComponent设置背景图像。问题是当我运行它时,没有对手图片显示它只是背景图像
请记住,我对编码非常陌生,所以我可能不理解解释,换句话说,如果不太麻烦的话,尽量保持简单。谢谢
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Lucario extends JPanel {
private int myHP;
private int oppHP;
private boolean ok;
private int rand;
private JButton olabel;
private JButton mlabel;
public Lucario() {
ImageIcon lIcon = new ImageIcon("opplucario.png");
ImageIcon sIcon = new ImageIcon("oppsylveon.png");
ImageIcon cIcon = new ImageIcon("oppcharizard.png");
ImageIcon grIcon = new ImageIcon("oppgreninja.png");
ImageIcon geIcon = new ImageIcon("oppgengar.png");
ImageIcon mIcon = new ImageIcon("oppmystery.png");
for (int k = 0; k < 1; k++) {
rand = (int) (Math.random() * 6);
}
switch (rand) {
case 0:
JLabel l = new JLabel();
l.setIcon(lIcon);
add(l);
oppHP = 344;
break;
case 1:
JLabel s = new JLabel();
s.setIcon(sIcon);
add(s);
oppHP = 394;
break;
case 2:
JLabel c = new JLabel();
c.setIcon(cIcon);
add(c);
oppHP = 360;
break;
case 3:
JLabel gr = new JLabel();
gr.setIcon(grIcon);
add(gr);
oppHP = 348;
break;
case 4:
JLabel ge = new JLabel();
ge.setIcon(geIcon);
add(ge);
oppHP = 324;
break;
case 5:
JLabel m = new JLabel();
m.setIcon(mIcon);
add(m);
oppHP = 400;
break;
}
myHP = 344;
this.setLayout(null);
olabel = new JButton("HP: " + oppHP);
olabel.setFont(new Font("Serif", Font.BOLD, 20));
olabel.setBounds(70, 100, 150, 40);
olabel.setOpaque(false);
olabel.setContentAreaFilled(false);
olabel.setBorderPainted(false);
add(olabel);
mlabel = new JButton("HP: " + myHP);
mlabel.setFont(new Font("Serif", Font.BOLD, 20));
mlabel.setBounds(350, 330, 150, 40);
mlabel.setOpaque(false);
mlabel.setContentAreaFilled(false);
mlabel.setBorderPainted(false);
add(mlabel);
}
public void paintComponent(Graphics g) {
ImageIcon Backg = new ImageIcon("playbg.png");
g.drawImage(Backg.getImage(), 0, 0, 590, 590, this);
}
}
# 1 楼答案
主要问题是使用
null
布局,例如m
默认情况下没有大小或位置信息(0x0
@0x0
)适当的答案是使用一个或多个适当的布局管理器
# 2 楼答案
应该是:
一般提示
URL
而不是File
访问。请参见标签的info page,了解形成URL
的方法李>