简体   繁体   English

我无法将ImageIcon添加到JPanel

[英]I can't add an ImageIcon to a a JPanel

Before you say anything, I intend on using a null layout manager. 在您说什么之前,我打算使用一个空布局管理器。 I am aware this is not the best thing to do. 我知道这不是最好的选择。

This is my code. 这是我的代码。 Excuse the inefficiency I am only a beginner in java and don't know how to do it otherwise. 对不起,效率低下,我只是Java的初学者,不知道该怎么做。

package AEngine;
import java.awt.*;

import javax.swing.*;

import AEngine.Sprites.*;
import AEngine.Maps.Crossroads;
@SuppressWarnings("unused")
public class WindowManager {
public static ImageIcon x1y1 = new ImageIcon("");
public static ImageIcon x2y1 = new ImageIcon("");
public static ImageIcon x3y1 = new ImageIcon("");
public static ImageIcon x4y1 = new ImageIcon("");
public static ImageIcon x5y1 = new ImageIcon("");
public static ImageIcon x6y1 = new ImageIcon("");
public static ImageIcon x7y1 = new ImageIcon("");
public static ImageIcon x8y1 = new ImageIcon("");
public static ImageIcon x9y1 = new ImageIcon("");
public static ImageIcon x10y1 = new ImageIcon("");
public static ImageIcon x11y1 = new ImageIcon("");
public static ImageIcon x12y1 = new ImageIcon("");
public static ImageIcon x1y2 = new ImageIcon("");
public static ImageIcon x2y2 = new ImageIcon("");
public static ImageIcon x3y2 = new ImageIcon("");
public static ImageIcon x4y2 = new ImageIcon("");
public static ImageIcon x5y2 = new ImageIcon("");
public static ImageIcon x6y2 = new ImageIcon("");
public static ImageIcon x7y2 = new ImageIcon("");
public static ImageIcon x8y2 = new ImageIcon("");
public static ImageIcon x9y2 = new ImageIcon("");
public static ImageIcon x10y2 = new ImageIcon("");
public static ImageIcon x11y2 = new ImageIcon("");
public static ImageIcon x12y2 = new ImageIcon("");
public static ImageIcon x1y3 = new ImageIcon("");
public static ImageIcon x2y3 = new ImageIcon("");
public static ImageIcon x3y3 = new ImageIcon("");
public static ImageIcon x4y3 = new ImageIcon("");
public static ImageIcon x5y3 = new ImageIcon("");
public static ImageIcon x6y3 = new ImageIcon("");
public static ImageIcon x7y3 = new ImageIcon("");
public static ImageIcon x8y3 = new ImageIcon("");
public static ImageIcon x9y3 = new ImageIcon("");
public static ImageIcon x10y3 = new ImageIcon("");
public static ImageIcon x11y3 = new ImageIcon("");
public static ImageIcon x12y3 = new ImageIcon("");
public static ImageIcon x1y4 = new ImageIcon("");
public static ImageIcon x2y4 = new ImageIcon("");
public static ImageIcon x3y4 = new ImageIcon("");
public static ImageIcon x4y4 = new ImageIcon("");
public static ImageIcon x5y4 = new ImageIcon("");
public static ImageIcon x6y4 = new ImageIcon("");
public static ImageIcon x7y4 = new ImageIcon("");
public static ImageIcon x8y4 = new ImageIcon("");
public static ImageIcon x9y4 = new ImageIcon("");
public static ImageIcon x10y4 = new ImageIcon("");
public static ImageIcon x11y4 = new ImageIcon("");
public static ImageIcon x12y4 = new ImageIcon("");
public static ImageIcon x1y5 = new ImageIcon("");
public static ImageIcon x2y5 = new ImageIcon("");
public static ImageIcon x3y5 = new ImageIcon("");
public static ImageIcon x4y5 = new ImageIcon("");
public static ImageIcon x5y5 = new ImageIcon("");
public static ImageIcon x6y5 = new ImageIcon("");
public static ImageIcon x7y5 = new ImageIcon("");
public static ImageIcon x8y5 = new ImageIcon("");
public static ImageIcon x9y5 = new ImageIcon("");
public static ImageIcon x10y5 = new ImageIcon("");
public static ImageIcon x11y5 = new ImageIcon("");
public static ImageIcon x12y5 = new ImageIcon("");
public static ImageIcon x1y6 = new ImageIcon("");
public static ImageIcon x2y6 = new ImageIcon("");
public static ImageIcon x3y6 = new ImageIcon("");
public static ImageIcon x4y6 = new ImageIcon("");
public static ImageIcon x5y6 = new ImageIcon("");
public static ImageIcon x6y6 = new ImageIcon("");
public static ImageIcon x7y6 = new ImageIcon("");
public static ImageIcon x8y6 = new ImageIcon("");
public static ImageIcon x9y6 = new ImageIcon("");
public static ImageIcon x10y6 = new ImageIcon("");
public static ImageIcon x11y6 = new ImageIcon("");
public static ImageIcon x12y6 = new ImageIcon("");
public static ImageIcon x1y7 = new ImageIcon("");
public static ImageIcon x2y7 = new ImageIcon("");
public static ImageIcon x3y7 = new ImageIcon("");
public static ImageIcon x4y7 = new ImageIcon("");
public static ImageIcon x5y7 = new ImageIcon("");
public static ImageIcon x6y7 = new ImageIcon("");
public static ImageIcon x7y7 = new ImageIcon("");
public static ImageIcon x8y7 = new ImageIcon("");
public static ImageIcon x9y7 = new ImageIcon("");
public static ImageIcon x10y7 = new ImageIcon("");
public static ImageIcon x11y7 = new ImageIcon("");
public static ImageIcon x12y7 = new ImageIcon("");
public static ImageIcon x1y8 = new ImageIcon("");
public static ImageIcon x2y8 = new ImageIcon("");
public static ImageIcon x3y8 = new ImageIcon("");
public static ImageIcon x4y8 = new ImageIcon("");
public static ImageIcon x5y8 = new ImageIcon("");
public static ImageIcon x6y8 = new ImageIcon("");
public static ImageIcon x7y8 = new ImageIcon("");
public static ImageIcon x8y8 = new ImageIcon("");
public static ImageIcon x9y8 = new ImageIcon("");
public static ImageIcon x10y8 = new ImageIcon("");
public static ImageIcon x11y8 = new ImageIcon("");
public static ImageIcon x12y8 = new ImageIcon("");
public static ImageIcon x1y9= new ImageIcon("");
public static ImageIcon x2y9 = new ImageIcon("");
public static ImageIcon x3y9 = new ImageIcon("");
public static ImageIcon x4y9 = new ImageIcon("");
public static ImageIcon x5y9 = new ImageIcon("");
public static ImageIcon x6y9 = new ImageIcon("");
public static ImageIcon x7y9 = new ImageIcon("");
public static ImageIcon x8y9 = new ImageIcon("");
public static ImageIcon x9y9 = new ImageIcon("");
public static ImageIcon x10y9 = new ImageIcon("");
public static ImageIcon x11y9 = new ImageIcon("");
public static ImageIcon x12y9 = new ImageIcon("");
public static ImageIcon x1y10 = new ImageIcon("");
public static ImageIcon x2y10 = new ImageIcon("");
public static ImageIcon x3y10 = new ImageIcon("");
public static ImageIcon x4y10 = new ImageIcon("");
public static ImageIcon x5y10 = new ImageIcon("");
public static ImageIcon x6y10 = new ImageIcon("");
public static ImageIcon x7y10 = new ImageIcon("");
public static ImageIcon x8y10 = new ImageIcon("");
public static ImageIcon x9y10 = new ImageIcon("");
public static ImageIcon x10y10 = new ImageIcon("");
public static ImageIcon x11y10 = new ImageIcon("");
public static ImageIcon x12y10 = new ImageIcon("");
public static ImageIcon x1y11 = new ImageIcon("");
public static ImageIcon x2y11 = new ImageIcon("");
public static ImageIcon x3y11 = new ImageIcon("");
public static ImageIcon x4y11 = new ImageIcon("");
public static ImageIcon x5y11 = new ImageIcon("");
public static ImageIcon x6y11 = new ImageIcon("");
public static ImageIcon x7y11 = new ImageIcon("");
public static ImageIcon x8y11 = new ImageIcon("");
public static ImageIcon x9y11 = new ImageIcon("");
public static ImageIcon x10y11 = new ImageIcon("");
public static ImageIcon x11y11 = new ImageIcon("");
public static ImageIcon x12y11 = new ImageIcon("");
public static ImageIcon x1y12 = new ImageIcon("");
public static ImageIcon x2y12 = new ImageIcon("");
public static ImageIcon x3y12 = new ImageIcon("");
public static ImageIcon x4y12 = new ImageIcon("");
public static ImageIcon x5y12 = new ImageIcon("");
public static ImageIcon x6y12 = new ImageIcon("");
public static ImageIcon x7y12 = new ImageIcon("");
public static ImageIcon x8y12 = new ImageIcon("");
public static ImageIcon x9y12 = new ImageIcon("");
public static ImageIcon x10y12 = new ImageIcon("");
public static ImageIcon x11y12 = new ImageIcon("");
public static ImageIcon x12y12 = new ImageIcon("");
public static JFrame MFrame = new JFrame();
@SuppressWarnings("static-access")
public static void main(String[] args){
MFrame.setLayout(null);
MFrame.setSize(576, 576);
JPanel MPanel = new JPanel();
MFrame.setContentPane(MPanel);
AEngine.Maps.Crossroads Map = new AEngine.Maps.Crossroads();
AEngine.Sprites.Sprites SManager = new AEngine.Sprites.Sprites();
int[][] TileData = Map.TileData();
x1y1 = SManager.GetSprite(TileData[1][1]);
x2y1 = SManager.GetSprite(TileData[2][1]);
x3y1 = SManager.GetSprite(TileData[3][1]);
x4y1 = SManager.GetSprite(TileData[4][1]);
x5y1 = SManager.GetSprite(TileData[5][1]);
x6y1 = SManager.GetSprite(TileData[6][1]);
x7y1 = SManager.GetSprite(TileData[7][1]);
x8y1 = SManager.GetSprite(TileData[8][1]);
x9y1 = SManager.GetSprite(TileData[9][1]);
x10y1 = SManager.GetSprite(TileData[10][1]);
x11y1 = SManager.GetSprite(TileData[11][1]);
x12y1 = SManager.GetSprite(TileData[12][1]);
x1y2 = SManager.GetSprite(TileData[1][2]);
x2y2 = SManager.GetSprite(TileData[2][2]);
x3y2 = SManager.GetSprite(TileData[3][2]);
x4y2 = SManager.GetSprite(TileData[4][2]);
x5y2 = SManager.GetSprite(TileData[5][2]);
x6y2 = SManager.GetSprite(TileData[6][2]);
x7y2 = SManager.GetSprite(TileData[7][2]);
x8y2 = SManager.GetSprite(TileData[8][2]);
x9y2 = SManager.GetSprite(TileData[9][2]);
x10y2 = SManager.GetSprite(TileData[10][2]);
x11y2 = SManager.GetSprite(TileData[11][2]);
x12y2 = SManager.GetSprite(TileData[12][2]);
x1y3 = SManager.GetSprite(TileData[1][3]);
x2y3 = SManager.GetSprite(TileData[2][3]);
x3y3 = SManager.GetSprite(TileData[3][3]);
x4y3 = SManager.GetSprite(TileData[4][3]);
x5y3 = SManager.GetSprite(TileData[5][3]);
x6y3 = SManager.GetSprite(TileData[6][3]);
x7y3 = SManager.GetSprite(TileData[7][3]);
x8y3 = SManager.GetSprite(TileData[8][3]);
x9y3 = SManager.GetSprite(TileData[9][3]);
x10y3 = SManager.GetSprite(TileData[10][3]);
x11y3 = SManager.GetSprite(TileData[11][3]);
x12y3 = SManager.GetSprite(TileData[12][3]);
x1y4 = SManager.GetSprite(TileData[1][4]);
x2y4 = SManager.GetSprite(TileData[2][4]);
x3y4 = SManager.GetSprite(TileData[3][4]);
x4y4 = SManager.GetSprite(TileData[4][4]);
x5y4 = SManager.GetSprite(TileData[5][4]);
x6y4 = SManager.GetSprite(TileData[6][4]);
x7y4 = SManager.GetSprite(TileData[7][4]);
x8y4 = SManager.GetSprite(TileData[8][4]);
x9y4 = SManager.GetSprite(TileData[9][4]);
x10y4 = SManager.GetSprite(TileData[10][4]);
x11y4 = SManager.GetSprite(TileData[11][4]);
x12y4 = SManager.GetSprite(TileData[12][4]);
x1y5 = SManager.GetSprite(TileData[1][5]);
x2y5 = SManager.GetSprite(TileData[2][5]);
x3y5 = SManager.GetSprite(TileData[3][5]);
x4y5 = SManager.GetSprite(TileData[4][5]);
x5y5 = SManager.GetSprite(TileData[5][5]);
x6y5 = SManager.GetSprite(TileData[6][5]);
x7y5 = SManager.GetSprite(TileData[7][5]);
x8y5 = SManager.GetSprite(TileData[8][5]);
x9y5 = SManager.GetSprite(TileData[9][5]);
x10y5 = SManager.GetSprite(TileData[10][5]);
x11y5 = SManager.GetSprite(TileData[11][5]);
x12y5 = SManager.GetSprite(TileData[12][5]);
x1y6 = SManager.GetSprite(TileData[1][6]);
x2y6 = SManager.GetSprite(TileData[2][6]);
x3y6 = SManager.GetSprite(TileData[3][6]);
x4y6 = SManager.GetSprite(TileData[4][6]);
x5y6 = SManager.GetSprite(TileData[5][6]);
x6y6 = SManager.GetSprite(TileData[6][6]);
x7y6 = SManager.GetSprite(TileData[7][6]);
x8y6 = SManager.GetSprite(TileData[8][6]);
x9y6 = SManager.GetSprite(TileData[9][6]);
x10y6 = SManager.GetSprite(TileData[10][6]);
x11y6 = SManager.GetSprite(TileData[11][6]);
x12y6 = SManager.GetSprite(TileData[12][6]);
x1y7 = SManager.GetSprite(TileData[1][7]);
x2y7 = SManager.GetSprite(TileData[2][7]);
x3y7 = SManager.GetSprite(TileData[3][7]);
x4y7 = SManager.GetSprite(TileData[4][7]);
x5y7 = SManager.GetSprite(TileData[5][7]);
x6y7 = SManager.GetSprite(TileData[6][7]);
x7y7 = SManager.GetSprite(TileData[7][7]);
x8y7 = SManager.GetSprite(TileData[8][7]);
x9y7 = SManager.GetSprite(TileData[9][7]);
x10y7 = SManager.GetSprite(TileData[10][7]);
x11y7 = SManager.GetSprite(TileData[11][7]);
x12y7 = SManager.GetSprite(TileData[12][7]);
x1y8 = SManager.GetSprite(TileData[1][8]);
x2y8 = SManager.GetSprite(TileData[2][8]);
x3y8 = SManager.GetSprite(TileData[3][8]);
x4y8 = SManager.GetSprite(TileData[4][8]);
x5y8 = SManager.GetSprite(TileData[5][8]);
x6y8 = SManager.GetSprite(TileData[6][8]);
x7y8 = SManager.GetSprite(TileData[7][8]);
x8y8 = SManager.GetSprite(TileData[8][8]);
x9y8 = SManager.GetSprite(TileData[9][8]);
x10y8 = SManager.GetSprite(TileData[10][8]);
x11y8 = SManager.GetSprite(TileData[11][8]);
x12y8 = SManager.GetSprite(TileData[12][8]);
x1y9 = SManager.GetSprite(TileData[1][9]);
x2y9 = SManager.GetSprite(TileData[2][9]);
x3y9 = SManager.GetSprite(TileData[3][9]);
x4y9 = SManager.GetSprite(TileData[4][9]);
x5y9 = SManager.GetSprite(TileData[5][9]);
x6y9 = SManager.GetSprite(TileData[6][9]);
x7y9 = SManager.GetSprite(TileData[7][9]);
x8y9 = SManager.GetSprite(TileData[8][9]);
x9y9 = SManager.GetSprite(TileData[9][9]);
x10y9 = SManager.GetSprite(TileData[10][9]);
x11y9 = SManager.GetSprite(TileData[11][9]);
x12y9 = SManager.GetSprite(TileData[12][9]);
x1y10 = SManager.GetSprite(TileData[1][10]);
x2y10 = SManager.GetSprite(TileData[2][10]);
x3y10 = SManager.GetSprite(TileData[3][10]);
x4y10 = SManager.GetSprite(TileData[4][10]);
x5y10 = SManager.GetSprite(TileData[5][10]);
x6y10 = SManager.GetSprite(TileData[6][10]);
x7y10 = SManager.GetSprite(TileData[7][10]);
x8y10 = SManager.GetSprite(TileData[8][10]);
x9y10 = SManager.GetSprite(TileData[9][10]);
x10y10 = SManager.GetSprite(TileData[10][10]);
x11y10 = SManager.GetSprite(TileData[11][10]);
x12y10 = SManager.GetSprite(TileData[12][10]);
x1y11 = SManager.GetSprite(TileData[1][11]);
x2y11 = SManager.GetSprite(TileData[2][11]);
x3y11 = SManager.GetSprite(TileData[3][11]);
x4y11 = SManager.GetSprite(TileData[4][11]);
x5y11 = SManager.GetSprite(TileData[5][11]);
x6y11 = SManager.GetSprite(TileData[6][11]);
x7y11 = SManager.GetSprite(TileData[7][11]);
x8y11 = SManager.GetSprite(TileData[8][11]);
x9y11 = SManager.GetSprite(TileData[9][11]);
x10y11 = SManager.GetSprite(TileData[10][11]);
x11y11 = SManager.GetSprite(TileData[11][11]);
x12y11 = SManager.GetSprite(TileData[12][11]);
x1y12 = SManager.GetSprite(TileData[1][12]);
x2y12 = SManager.GetSprite(TileData[2][12]);
x3y12 = SManager.GetSprite(TileData[3][12]);
    x4y12 = SManager.GetSprite(TileData[4][12]);
    x5y12 = SManager.GetSprite(TileData[5][12]);
    x6y12 = SManager.GetSprite(TileData[6][12]);
x7y12 = SManager.GetSprite(TileData[7][12]);
    x8y12 = SManager.GetSprite(TileData[8][12]);
    x9y12 = SManager.GetSprite(TileData[9][12]);
    x10y12 = SManager.GetSprite(TileData[10][12]);
    x11y12 = SManager.GetSprite(TileData[11][12]);
    x12y12 = SManager.GetSprite(TileData[12][12]);
    MPanel.add(x1y1);
    MFrame.add(MPanel);
}
} 

The problem is that on the MPanel.add(x1y1); 问题是在MPanel.add(x1y1);上。 bit It says that it's not the right data type, and it can only take components. bit表示这不是正确的数据类型,并且只能包含组件。 Also if you have any way of dynamically creating variables in java please let me know. 另外,如果您有任何在Java中动态创建变量的方法,请告诉我。

Help please? 请帮助?

You can't add ImageIcons to JPanels, but you can to JLabels. 您不能将ImageIcons添加到JPanels,但是可以将其添加到JLabels。 I suggest that you do this instead, and then add the JLabel to your JPanel -- using decent layout managers. 我建议您改为执行此操作,然后使用体面的布局管理器将JLabel添加到您的JPanel中

As an aside: your code is begging you to use arrays or ArrayLists. 顺便说一句:您的代码恳求您使用数组或ArrayLists。 Please don't ignore its pleas. 请不要忽略它的请求。

Your huge list of code could be shortened to something like so, 您的大量代码清单可以缩短为类似的形式,

  int[][] TileData = Map.TileData();

  ImageIcon[][] xyIcons = new ImageIcon[12][12];
  for (int i = 0; i < xyIcons.length; i++) {
     for (int j = 0; j < xyIcons[i].length; j++) {
        xyIcons[i][j] = SManager.GetSprite(TileData[i][j]);
     }
  }

making it much easier to maintain and debug. 使维护和调试更加容易。


Edit 编辑
You state: 您声明:

But it is my intent to use a null layout manager. 但是我的目的是使用空布局管理器。 I hate them. 我恨他们。 They are so confusing to work with. 他们是如此令人困惑。 Java from the start should never of had it, in my opinion. 我认为Java从一开始就不应该拥有它。

Don't get me wrong, null layout has some uses, and I've used it to animate components, but in general should be avoided. 不要误会我的意思,空布局有一些用途,并且我已经使用过它来为组件制作动画,但是通常应该避免使用。 Consider creating and posting a new question on this site, where you show an attempt to create a GUI using layout managers, show an image of the layout that you're trying to achieve and an image of what you're getting. 考虑在此站点上创建并发布一个新问题,在该站点上您将展示使用布局管理器创建GUI的尝试,显示您要实现的布局的图像以及所获得的图像。 If you do this, be sure that your code compiles and runs for us unaltered, but is as simple as possible, containing simple dumb components such as buttons that have no ActionListeners attached. 如果执行此操作,请确保您的代码无需更改就可以为我们编译和运行,但应尽可能简单,其中包含简单的组件,例如未附加ActionListener的按钮。 I'll bet we can help you achieve a decent non-null layout. 我敢打赌,我们可以帮助您实现不错的非null布局。 Also keep in mind that many complex and flexible GUI's are created by nesting JPanels, each using its own layout. 还请记住,许多复杂而灵活的GUI是通过嵌套JPanels创建的,每个JPanel都使用其自己的布局。

The code snippet builds on what Hovercraft Full of Eels said: 该代码段基于《 Hovercraft Full of Eels所说的内容:

ImageIcon icon = new ImageIcon("/path/to/image.PNG");
JLabel label = new JLabel(icon);
JPanel panel = new JPanel();

setLayout(new FlowLayout());
panel.add(label);
getContentPane().add(panel);
pack();
setVisible(true);  

This is how you would put an image in a JPanel . 这就是将图像放入JPanel

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM