Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JLabel添加图片时出现问题_Java_Swing_Jlabel_Paintcomponent_Imageicon_Embedded Resource - Fatal编程技术网

Java 使用JLabel添加图片时出现问题

Java 使用JLabel添加图片时出现问题,java,swing,jlabel,paintcomponent,imageicon,embedded-resource,Java,Swing,Jlabel,Paintcomponent,Imageicon,Embedded Resource,我正在为我的高中计算机科学课做最后一个项目(一个非常平庸的口袋妖怪游戏),我有一个switch语句的问题,我添加了一个带有图像图标的Jlabel 当我运行驱动程序并打开此面板时,它应该添加一个随机对手,这就是switch语句的目的,它根据对手是谁给oppHP变量一个值。底部的PaintComponent设置背景图像。问题是当我运行它时,没有对手图片显示它只是背景图像 请记住,我对编码非常陌生,所以我可能不理解解释,换句话说,如果不太麻烦的话,尽量保持简单。谢谢 import javax.swin

我正在为我的高中计算机科学课做最后一个项目(一个非常平庸的口袋妖怪游戏),我有一个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);

    }

}
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); 
  • 重写的绘制中的第一个调用应该是super方法
  • 映像应作为类成员加载和缓存。千万不要尝试在绘制方法中加载资源,这应该很快完成 一般提示
  • 到部署时,这些资源很可能会成为一种资源。在这种情况下,必须通过
    URL
    而不是
    File
    访问资源。有关形成
    URL
    的方法,请参阅标签的
  • javagui可能必须在许多平台上工作,在不同的屏幕分辨率上&使用不同的plaf。因此,它们不利于部件的精确放置。要为健壮的GUI组织组件,请使用布局管理器或1,以及布局填充和边框2。

  • 应该是:

    public void paintComponent(Graphics g) { 
        super.paintComponent(g); 
    
  • 重写的绘制中的第一个调用应该是super方法
  • 映像应作为类成员加载和缓存。千万不要尝试在绘制方法中加载资源,这应该很快完成 一般提示
  • 到部署时,这些资源很可能会成为一种资源。在这种情况下,必须通过
    URL
    而不是
    File
    访问资源。有关形成
    URL
    的方法,请参阅标签的
  • javagui可能必须在许多平台上工作,在不同的屏幕分辨率上&使用不同的plaf。因此,它们不利于部件的精确放置。组织公司