将char网格添加到jPanel

时间:2014-01-06 14:57:36

标签: java eclipse swing gridworld

我有两个类,一个是设置网格,另一个是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]);

不知道在此添加任何内容以将网格添加到面板中

1 个答案:

答案 0 :(得分:1)

  

“我无法弄清楚如何将网格插入到jpanel中,因为这比预期的要复杂得多。我尝试了很多东西,但没有运气......有什么帮助?” < / p>

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

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

enter image description here

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();

    }

}

以下是我将JLabel添加到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