LOVETEDA 2015-09-06 04:55 采纳率: 60%
浏览 1397
已采纳

关于Java的Swing程序问题

图片说明
运行这个Java程序的时候容器网格设置为3行3列,为什么运行的时候只有两列,而且第四个面板大小与其他三个不同?

  • 写回答

3条回答 默认 最新

  • 毕小宝 博客专家认证 2015-10-22 05:15
    关注

    第一个问题,你的结果之所以不是3行3列, GridLayout(3,3)布局时,设定的列数只有在行数为0时才起作用;当行数不为0时,列数是由行数和添加的布局组件总数决定的。比如,你的程序里面,行数为3,布局组件总数为4,那么列数将被确定为2,所以,你会看到运行之后的布局。
    第二个问题,你的p4有两行,所以就是这样的效果了。
    修正代码如下(布局行数为0,p4为1行),可以看到你需要的效果:

     import java.awt.*;
    import javax.swing.*;
    
    public class JPanelTest extends JFrame{
    
        public JPanelTest() throws HeadlessException {
            Container c = getContentPane();
            c.setLayout(new GridLayout(0,3,10,10));
            JPanel p1 = new JPanel(new GridLayout(1,1,10,10));
            JPanel p2 = new JPanel(new GridLayout(1,2,10,10));
            JPanel p3 = new JPanel(new GridLayout(1,2,10,10));
            JPanel p4 = new JPanel(new GridLayout(1,1,10,10));
    
            p1.add(new JButton("1"));
            p2.add(new JButton("2"));
            p3.add(new JButton("3"));
            p4.add(new JButton("4"));
    
            c.add(p1);
            c.add(p2);
            c.add(p3);
            c.add(p4);
    
            setSize(400,500);
            setVisible(true);
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        }
    
        public static void main(String[] args) {
            new JPanelTest();
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)