графический интерфейс Java - слишком много панелей? - PullRequest
0 голосов
/ 05 ноября 2010

Я пытаюсь создать настольную игру на Java, однако я довольно новичок в GUI. Проблема в том, что цветные панели добавляются в макет сетки, как и изображения, так что они в конечном итоге упаковываются рядом.

Мне бы хотелось, чтобы изображения располагались поверх других цветовых панелей, чтобы они выглядели как доска с кусочками (изображениями) сверху.

следующий код должен создать четыре цветных квадрата с четырьмя одинаковыми изображениями сверху, вместо этого они просто оказываются рядом друг с другом.

import java.awt.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class test extends JFrame {

private static JPanel gridLayout = new JPanel(new GridLayout(2, 2));
    private static ImageIcon img = new 
ImageIcon(System.getProperty("user.dir") + "/images/an_image.png");
private static String[] boardTest = {
        "i", "i", 
        "i", "i" };

public test() {
    BorderLayout layout = new BorderLayout();
    setLayout(layout);
    add(gridLayout);
}

private static JLabel getPieceObject(String strPieceName) {
    JLabel images;
    if (strPieceName.equals("i")) {
        images = new JLabel(img);
    }  else {
        images = new JLabel();
    }
    return images;
}

private static void displayBoard() {
    for (int i = 0; i < 4; i++) {
        gridLayout.add(getPieceObject(boardTest[i]), BorderLayout.CENTER);
        // this creates the color squares of the board//
        JPanel panel = new JPanel(); //error
          if (i % 2 == i/2 % 2) {
              panel.setBackground(Color.RED);
          } else {
              panel.setBackground(Color.BLUE);
          }
          gridLayout.add(panel); 
        ////////////////////////////////////////////////
          gridLayout.validate();
    }
}

public static void main(String[] args) {
    displayBoard();
    test app = new test();
    app.setSize(200, 200);
    app.setVisible(true);
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

1 Ответ

1 голос
/ 05 ноября 2010

Вы можете установить изображение в качестве фона панели, примерно так .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...