首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java swing制作10x10板

使用java swing制作10x10板
EN

Stack Overflow用户
提问于 2013-11-22 10:02:18
回答 1查看 1.8K关注 0票数 0

我正在尝试用java swing制作一个10x10 board。但我不知道为什么其中一个盒子不在这里。另一个99 grid与我在setBounds()中设置的相同,但最后一个网格位于0,0 position中。我正在使用jButton作为grid。我做错了什么有什么暗示吗?到目前为止,我编写的代码:

代码语言:javascript
复制
JFrame frame = new JFrame();
JButton[][] grid;
int y = 10;
int x = 10;
public Board() {
    initComponents();
    jButton = new JButton[x][y];
    setGrid();
}
private javax.swing.JButton[][] jButton;
public void setGrid(){
    int size = 75;
    int o = size * x;
    int p = size * y;

    int k = 0;
    int l = 0;
    int z = 9;
    for(int i=p;i>0;i-=size){
        for(int j=0;j<o;j+=size){
            jButton[k][l] = new javax.swing.JButton();
            jButton[k][l].setBounds(j, i, size, size);
            jButton[k][l].setBackground(Color.yellow);
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
            this.setLayout(layout);

            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jButton[k][l])
                    )

            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(jButton[k][l])
                    ));
            if(k==9){
                k=0;
            }
            else{
                k++;
            }
        }l++;
     }   
}

public static void main(String[] args){
    JFrame frame = new JFrame("Board");
    frame.setContentPane(new Board());
    Dimension dmsn = new Dimension();
    dmsn.height = 1080;
    dmsn.width = 1920;
    Insets insets = frame.getInsets();
    frame.setMinimumSize(dmsn);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-22 10:10:02

代码语言:javascript
复制
for(int i=p;i>0;i-=size){
        for(int j=0;j<o;j+=size){
            jButton[k][l] = new javax.swing.JButton();
            jButton[k][l].setBounds(j, i, size, size);
            jButton[k][l].setBackground(Color.yellow);
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
            this.setLayout(layout);
  1. 每次执行循环时,您都要创建一个新布局。将setLayout代码放在循环之前。
  2. 在工作布局时不要设置边界,而不是NULL布局
  3. 当您打算使您的GridLayout成为网格时,请使用Container
  4. 不要在手工编码的时候使用GroupLayout:使用它并不是不可能的,但却是乏味的。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20142021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档