简体   繁体   中英

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.

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); bit It says that it's not the right data type, and it can only take components. Also if you have any way of dynamically creating variables in java please let me know.

Help please?

You can't add ImageIcons to JPanels, but you can to JLabels. I suggest that you do this instead, and then add the JLabel to your JPanel -- using decent layout managers.

As an aside: your code is begging you to use arrays or 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.

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. 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. I'll bet we can help you achieve a decent non-null layout. Also keep in mind that many complex and flexible GUI's are created by nesting JPanels, each using its own layout.

The code snippet builds on what Hovercraft Full of Eels said:

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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