0

グリッドを設定するクラスと GUI を作成するクラスの 2 つのクラスがあります。最初のクラスのグリッドを 2 番目のクラスの jPanel に挿入します。最初のグリッドは char グリッドで、ランダムに開始される数字で埋められます。これは予想よりも複雑であるため、グリッドを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 に挿入する方法が予想以上に複雑なので、うまくいきません。いろいろ試してみましたが、うまくいきませんでした。何か助けはありますか?」

何をしようとしているのか、何を間違っているのか正確にはわかりませんが、私が提案できることの 1 つは、JLabels を使用することです。テキストをパラメータとして取り、ラベルにテキストを表示します。JPanel一方、描画する必要があります (つまり、実際に自分でテキストを描画する必要があります)。

このプログラムをテストして、私が話していることを確認してください

ここに画像の説明を入力

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にs を追加するコードは次のとおりです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 に答える