Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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_Jframe_Jlabel - Fatal编程技术网

Java 将JLabel添加到游戏角色的帧中

Java 将JLabel添加到游戏角色的帧中,java,jframe,jlabel,Java,Jframe,Jlabel,我试图在我的主要方法中添加一个带有鸡图像的JLabel。当我将标签添加到框架时,没有显示任何内容。我还需要把鸡放在有坐标的框架上。这是我的代码: import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Toolkit; import java.awt.Container; import javax.swing.ImageIcon; import javax.sw

我试图在我的主要方法中添加一个带有鸡图像的JLabel。当我将标签添加到框架时,没有显示任何内容。我还需要把鸡放在有坐标的框架上。这是我的代码:

import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Container;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class TEST extends JFrame {
  /**
     * 
     */
    private static final long serialVersionUID = 1L;

TEST(){
    add(new ContentPanel());
    setSize(1440, 500);
  }

  public static void main(String[] args) {
    TEST jrframe = new TEST();
    jrframe.setVisible(true);
    JLabel chicken = new JLabel(" ");
    ImageIcon chick = new ImageIcon("chicken.gif");
    chicken.setIcon(chick);
    JPanel p1 = new JPanel();
    p1.add(chicken);
    jrframe.add(p1);
    p1.setLocation(0, 0);
  }
}

class ContentPanel extends JPanel{
  Image bgimage = null;

  ContentPanel() {
    MediaTracker mt = new MediaTracker(this);
    bgimage = Toolkit.getDefaultToolkit().getImage("level0.gif");
    mt.addImage(bgimage, 0);
    try {
      mt.waitForAll();
    } catch (InterruptedException e){
      e.printStackTrace();
    }
  }

  protected void paintComponent(Graphics g){
    super.paintComponent(g);
    int imwidth = bgimage.getWidth(null);
    int imheight = bgimage.getHeight(null);
    g.drawImage(bgimage, 1, 1, null);
  }
}

您正在将组件添加到已可见的框架中。执行此操作时,您需要通知LayoutManager发生此情况,或者最好在添加组件后移动调用
setVisible(true)

我建议在上构建您的UI,并在尝试更改jrframe.setVisible(true)时遵循;在jrframe.add(p1);,它将仅显示该面板中的图像。这是由于LayoutManager-内容窗格的默认LayoutManager为BorderLayout,其中心位置不能有两个组件。为了演示,在测试构造函数的第一行中,通过调用
getContentPane().setLayout(newflowlayout())
更改布局,以获取更多信息。