0

我有两个类,一个是设置网格的,另一个是制作 GUI 的。我希望将第一类的网格插入到第二类的 jPanel 中。第一个网格是一个字符网格,填充了随机启动的数字。我无法弄清楚如何将网格插入 jpanel,因为这比预期的要复杂。我尝试了很多事情,但没有任何运气..有什么帮助吗?

//set grid class

    public void setgrid() {
            Random ran = new Random();      
            for (int i = 0; i < X; i++) {
                for (int j = 0; j < Y; j++) {
                    int num = ran.nextInt(10); 
                    if (num == 4) { 
                        grid[i][j] = 'F'; 
                    } else if (num == 9) { 
                        grid[i][j] = 'O'; 
                    } else {
                        grid[i][j] = ' '; 
                    }}}


// Panel Class
    Panel = new JPanel(new GridLayout(X, Y));
            for (int i = 0; i < X; i++) {
                for (int j = 0; j < Y; j++) {
                    world[i][j] = new JPanel();
                    world[i][j].setBackground(Color.white);
                    world[i][j].setBorder(BorderFactory
                            .createLineBorder(Color.black));
                    Panel.add(world[i][j]);

不确定在此处添加什么以将网格添加到面板中

4

1 回答 1

1

“我无法弄清楚如何将网格插入 jpanel,因为这比预期的要复杂。我尝试了很多事情,但没有任何运气......有什么帮助吗?”

不确定您到底想做什么或做错了什么,但我可以建议的一件事是使用JLabels. 它们将文本作为参数,在标签中显示文本。JPanel另一方面,需要在 s 上绘制(这意味着您需要自己实际绘制文本)。

测试这个程序,看看我在说什么

在此处输入图像描述

import java.awt.GridLayout;

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

public class DrawGrid {

    public DrawGrid() {
        int[][] grid = getGrid();

        JPanel panel = new JPanel(new GridLayout(10, 10));
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[i].length; j++) {
                panel.add(new JLabel(String.valueOf(grid[i][j])));
            }
        }

        JFrame frame = new JFrame();
        frame.add(panel);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);


    }

    public int[][] getGrid() {
        int[][] grid = new int[10][10];
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[i].length; j++) {
                grid[i][j] = i;
            }
        }
        return grid;

    }
    public static void main(String[] args) {
        new DrawGrid();

    }

}

这是我将JLabels 添加到JPanel

    JPanel panel = new JPanel(new GridLayout(10, 10));
    for (int i = 0; i < grid.length; i++) {
        for (int j = 0; j < grid[i].length; j++) {
            panel.add(new JLabel(String.valueOf(grid[i][j])));
        }
    }

与向 中添加边框和背景的方式相同JPanel,您也可以使用JLabel

于 2014-01-06T15:10:43.743 回答