Java 使用JLabel添加图片时出现问题
我正在为我的高中计算机科学课做最后一个项目(一个非常平庸的口袋妖怪游戏),我有一个switch语句的问题,我添加了一个带有图像图标的Jlabel 当我运行驱动程序并打开此面板时,它应该添加一个随机对手,这就是switch语句的目的,它根据对手是谁给oppHP变量一个值。底部的PaintComponent设置背景图像。问题是当我运行它时,没有对手图片显示它只是背景图像 请记住,我对编码非常陌生,所以我可能不理解解释,换句话说,如果不太麻烦的话,尽量保持简单。谢谢Java 使用JLabel添加图片时出现问题,java,swing,jlabel,paintcomponent,imageicon,embedded-resource,Java,Swing,Jlabel,Paintcomponent,Imageicon,Embedded Resource,我正在为我的高中计算机科学课做最后一个项目(一个非常平庸的口袋妖怪游戏),我有一个switch语句的问题,我添加了一个带有图像图标的Jlabel 当我运行驱动程序并打开此面板时,它应该添加一个随机对手,这就是switch语句的目的,它根据对手是谁给oppHP变量一个值。底部的PaintComponent设置背景图像。问题是当我运行它时,没有对手图片显示它只是背景图像 请记住,我对编码非常陌生,所以我可能不理解解释,换句话说,如果不太麻烦的话,尽量保持简单。谢谢 import javax.swin
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);
}
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类Lucario扩展了JPanel{
私营部门:多年电价;
私营企业;
私有布尔ok;
私人国际兰特;
私人杰布顿·奥拉贝尔;
私人杰布顿·姆拉贝尔;
公共卢卡里奥{
ImageIcon lIcon=新的ImageIcon(“opplucario.png”);
ImageIcon sIcon=新的ImageIcon(“oppsylveon.png”);
ImageIcon cIcon=新的ImageIcon(“opcharizard.png”);
ImageIcon grIcon=新的ImageIcon(“oppgrenija.png”);
ImageIcon geIcon=新的ImageIcon(“opgengar.png”);
ImageIcon mIcon=新的ImageIcon(“oppsury.png”);
对于(int k=0;k<1;k++){
rand=(int)(Math.random()*6);
}
开关(兰德){
案例0:
JLabel=新的JLabel();
l、 设置图标(lIcon);
加(l);
ophp=344;
打破
案例1:
JLabel s=新的JLabel();
s、 设置图标(sIcon);
添加(s);
ophp=394;
打破
案例2:
JLabel c=新的JLabel();
c、 设置图标(cIcon);
添加(c);
ophp=360;
打破
案例3:
JLabel gr=新的JLabel();
gr.setIcon(格里肯);
添加(gr);
OPHP=348;
打破
案例4:
JLabel ge=新的JLabel();
通用电气公司(geIcon);
添加(通用电气);
oppHP=324;
打破
案例5:
JLabel m=新的JLabel();
m、 设置图标(mIcon);
加(m);
ophp=400;
打破
}
myHP=344;
此.setLayout(null);
olabel=新的JButton(“HP:+ophp”);
olabel.setFont(新字体(“衬线”,Font.BOLD,20));
奥拉贝尔.立根(70,100,150,40);
olabel.set不透明(假);
olabel.setContentAreaFilled(false);
olabel.com(假);
添加(olabel);
mlabel=新的JButton(“HP:+myHP”);
mlabel.setFont(新字体(“衬线”,Font.BOLD,20));
姆拉贝尔倒退(350、330、150、40);
mlabel.setOpaque(假);
mlabel.setContentAreaFilled(假);
mlabel.com(假);
添加(mlabel);
}
公共组件(图形g){
ImageIcon Backg=新的ImageIcon(“playbg.png”);
g、 drawImage(Backg.getImage(),0,0590590,this);
}
}
主要问题是您使用了null
布局,例如
JLabel m = new JLabel();
m.setIcon(mIcon);
add(m);
默认情况下,m
没有大小或位置信息(0x0
@0x0
)
适当的答案是使用一个或多个适当的布局管理器。主要问题是使用
null
布局,例如
JLabel m = new JLabel();
m.setIcon(mIcon);
add(m);
public void paintComponent(Graphics g) {
ImageIcon Backg = new ImageIcon("playbg.png");
默认情况下,m
没有大小或位置信息(0x0
@0x0
)
适当的答案是使用一个或多个适当的布局管理器。主要问题是使用
null
布局,例如
JLabel m = new JLabel();
m.setIcon(mIcon);
add(m);
public void paintComponent(Graphics g) {
ImageIcon Backg = new ImageIcon("playbg.png");
默认情况下,m
没有大小或位置信息(0x0
@0x0
)
适当的答案是使用一个或多个适当的布局管理器。主要问题是使用
null
布局,例如
JLabel m = new JLabel();
m.setIcon(mIcon);
add(m);
public void paintComponent(Graphics g) {
ImageIcon Backg = new ImageIcon("playbg.png");
默认情况下,m
没有大小或位置信息(0x0
@0x0
)
适当的答案是使用一个或多个适当的布局管理器
public void paintComponent(Graphics g) {
ImageIcon Backg = new ImageIcon("playbg.png");
应该是:
public void paintComponent(Graphics g) {
super.paintComponent(g);
URL
而不是File
访问资源。有关形成URL
的方法,请参阅标签的李>
public void paintComponent(Graphics g) {
super.paintComponent(g);
URL
而不是File
访问资源。有关形成URL
的方法,请参阅标签的李>