在我的图像上创建网格

时间:2015-04-09 07:10:16

标签: java swing user-interface

我目前正在尝试使用AWT和Swings在地图中创建移动角色。 我在尝试在我的图片上创建GridLayout时需要帮助。我尝试过使用setLayout(new GridLayout()),但它无效。 如果可能的话,我还想在其中加入KeyListener

目前,这是我的图像代码:

public class GUI extends JFrame{

    GUI(){
        setLayout(new FlowLayout());
        ImageIcon image1 = new ImageIcon("path-to-backgroundImage");
        JLabel label1 = new JLabel(image1);
        add(label1);
    }
    public static void main(String[] args) {
        GUI gui = new GUI();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setVisible(true);
        gui.pack();
        gui.setTitle("Map");
    }
}

这是我使用代码的GridLayout,但它不起作用:

  setLayout(new GridLayout(ROWS, COLS));
  for (int i = 0; i < ROWS; i++) {
     for (int j = 0; j < COLS; j++) {
        JLabel label = new JLabel(cellIcon);
        add(label);
     }
  }

总是非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

JLabel label1 = new JLabel(image1);
add(label1);

您可以将标签添加到框架中,这是合理的:

setLayout(new GridLayout(ROWS, COLS));
for (int i = 0; i < ROWS; i++) {
   for (int j = 0; j < COLS; j++) {
      JLabel label = new JLabel(cellIcon);
      add(label);
   }
}

但随后您更改了框架的布局并为框架添加了更多标签。你的代码没有意义。如果要将标签网格添加到背景图像,则代码应为:

label1.setLayout(new GridLayout(ROWS, COLS));
for (int i = 0; i < ROWS; i++) {
   for (int j = 0; j < COLS; j++) {
      JLabel label = new JLabel(cellIcon);
      label1.add(label);
   }
}

如果您需要更多帮助,请提供适当的SSCCE来证明问题。随机的代码行没有告诉我们代码的使用方式。