Java GridLayout如何动态更改网格布局

时间:2016-03-16 23:13:05

标签: java dynamic gridlayoutmanager

我正在尝试创建一个角色表程序,根据框架的宽度排列3个面板。如果框架不是很宽,我希望面板垂直排列,但如果用户选择使框架更宽,我想水平排列面板。

我还有一个滚动面板,排列了3个面板,因此scrollPanel正被添加到scrollPane。

我看到帖子说eventlistener可以工作,但是大多数是按钮,我需要Frame大小在布局更改之前传递一定的阈值。我看到其他帖子推荐html,我现在认为没必要。

enter image description here

因此,在这张照片中,3个面板垂直排列,并且可以滚动浏览。

    scrollPanel.add(leftPanel); //this is the yellow panel that is being added
    scrollPanel.add(centerPanel); //this one is farther down
    scrollPanel.add(rightPanel); //even farther down
    scrollPanel.setBackground(Color.CYAN);
    scrollPanel.setLayout(new GridLayout(0, 1)); //so here I would like to have an if statement or event swap the 0 and the 1.

摘要:

  • 我可以根据框架的大小动态更改GridLayout吗?

  • 如何监控帧大小变化?事件? if statement?

  • 我是否可以对ScrollPane执行相同的操作,根据面板是垂直还是水平,设置水平和垂直滚动条永远不会出现?

1 个答案:

答案 0 :(得分:1)

您可以按如下方式更改GridLayout:

gr.setRows(newR);
gr.setColumns(newC);
myFrame.validate();

其中gr是您在某处创建的布局,newR / newC是新的行/列数。

或者你可以说

gr=new GridLayout(newR, newC);
myFrame.setLayout(gr);

然后

if(myFrame.getWidth()>thershold) {

.. do the above

}