程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Java - 不寻常的 GridLayout 行为

发布于2022-09-07 10:47     阅读(1142)     评论(0)     点赞(26)     收藏(4)


只是在玩 Swing,想知道为什么当 GridLayout 定义为 10 行和 10 列时,下面的代码构造了一个似乎有 3 列的布局?

任何人都可以解释这种不寻常的行为以及提供的代码中导致这种情况发生的原因吗?

public class MyGrid {

    public static void main (String[] args) {
        JFrame frame = new JFrame();
        Container container = frame.getContentPane();
        container.setLayout(new GridLayout(10,10));
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i>=j) {
                    container.add(new JButton("X"));
                } else {
                    container.add(new JLabel("Y"));
                }
            }
        }
        frame.setSize(500,500);
        frame.setVisible(true);
    }

}

解决方案


请参阅类 javadoc GridLayout

当行数和列数都已通过构造函数或 setRows 和 setColumns 方法设置为非零值时,指定的列数将被忽略。相反,列数由指定的行数和布局中的组件总数确定。因此,例如,如果指定了三行两列,并且向布局中添加了九个组件,它们将显示为三行三列。仅当行数设置为零时,指定列数才会影响布局。

如果您使用此代码

public class MyGrid {

  public static void main (String[] args) {
    JFrame frame = new JFrame();
    Container container = frame.getContentPane();
    container.setLayout(new GridLayout(10,10));
    for ( int i =0; i < 100; i++ ){
      container.add( new JLabel( ""+i ) );
    }
    frame.setSize(500,500);
    frame.setVisible(true);
  }

}

你会看到 10 行和 10 列。例如,如果i < 50在 for 循环中使用,列数会发生变化。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/487615/39c078de1b3b8f67eab6/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)