【问题标题】:Component size in JPanelJPanel 中的组件大小
【发布时间】:2014-02-04 00:36:05
【问题描述】:

我创建了一个包含两个 JPanel 对象的框架。此面板不会占用框架中的所有空间,而仅占用一部分空间。我需要它们平等地占据框架内的可用空间。

container = frame.getContentPane();
matricepc = new JPanel();
matrice = new JPanel();
matrice.setLayout(new GridLayout(griglia.getRow(), griglia.getColumn()));
matricepc.setLayout(new GridLayout(griglia.getRow(), griglia.getColumn()));
container.add(matricepc,BorderLayout.NORTH);
container.add(matrice,BorderLayout.SOUTH);

【问题讨论】:

    标签: java swing user-interface layout-manager


    【解决方案1】:
    container.setLayout(new GridLayout(0,1));
    container.add(matricepc);
    container.add(matrice);
    

    编辑:这个“GridLayout”构造函数需要两个参数:第一个是行数,第二个是列数。当其中其中一个0 时,将根据另一个以及添加的组件数选择相应的编号。在此示例中:您指定您想要1 列(行数无关紧要 - 但由于您添加 2 个组件,行数将为 2 - 因此,您也可以编写 new GridLayout(2, 1) .

    EDIT2:与原始问题没有真正的关系,但或多或​​少是一个一般提示:不要低估 nesting 的力量以实现特定布局。在这种情况下,你可以给

    • 主容器(内容窗格)的 BorderLayout
    • 一个 GridLayout 到一个只包含矩阵面板的新面板

    并将“panelForMatrices”放入主容器:

    container.setLayout(new BorderLayout());
    
    JPanel panelForMatrices = new JPanel(new GridLayout(0,1));
    panelForMatrices.add(matricepc);
    panelForMatrices.add(matrice);
    container.add(panelForMatrices, BorderLayout.CENTER);
    
    JPanel lateralPanel = ...
    container.add(lateralPanel, BorderLayout.EAST);
    

    【讨论】:

    • 你能解释一下 (0,1) 是什么意思吗?
    • 添加了一个带有解释的编辑
    • 添加了另一个 EDIT 示例
    猜你喜欢
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多