簡體   English   中英

Java在網格布局中得到了錯誤數量的jbutton

[英]Java getting the wrong number of jbuttons in grid layout

所以我是Java的新手,而我肯定是Swing的新手。

我有一個將由迷宮使用的80 X 80陣列。 我需要我的GUI具有80 X 80按鈕,以便它們可以綁定到數組中的值。

我不知道為什么我從這段代碼中只能得到五個或六個大按鈕。 如果有人可以告訴我如何使它工作,那么請先謝謝您,因為我很沮喪。

只需運行它,您就會明白我的意思……而且我想我還沒有弄清楚如何更改按鈕的顏色,而是更改了背景顏色。

這是我的代碼:

public static void draw() {

    JFrame f = new JFrame();
    f.setTitle("Maze");
    f.setSize(800, 800);
    f.setVisible(true);
    f.setDefaultCloseOperation(EXIT_ON_CLOSE);

    JPanel c = (JPanel)f.getContentPane();
    GridLayout gridLayout = new GridLayout();
    c.setLayout(gridLayout);
    for(int i =0;i<80;i++){
        for(int j =0;j<80;j++){
            JButton b = new JButton();
            c.add(b, i,j);
            b.setSize(10, 10);
            b.setOpaque(true);
            b.setBackground(Color.red);
        }
    }


}

}
  1. 80 * 10 > f.setSize(800, 800); 並且您的代碼無法適合FullHd監視器

    1. 使用f.pack()代替f.setSize(800, 800);
  2. f.pack()f.setVisible(true); (可能是一個主要問題)應該是非靜態的最后代碼行,並重命名為! public void DrawMe() { !,因為draw()是Java API中的保留字

  3. c.add(b, i,j); 應該也是最后一個代碼行(邏輯順序),

  4. c.add(b, i,j); 為GridLayout設置行和列,而不是將JButton注入GridLayout虛擬網格


  • 使我有所了解(從元素數量開始)

在此處輸入圖片說明

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class DrawMe {

    private JFrame frame = new JFrame();
    private JPanel c = new JPanel();
    private static final int column = 10;
    private static final int row = 10;

    public DrawMe() {
        c.setLayout(new GridLayout(row, column));
        for (int i = 0; i < column; i++) {
            for (int j = 0; j < row; j++) {
                JButton b = new JButton((i + 1) + " " + (j + 1));
                c.add(b);
            }
        }
        frame.add(c);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocation(150, 150);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new DrawMe();
            }
        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM