我的某些按钮和面板有问题。我创建了一个带有GridBagLayout 6x1的JPanel。
GraphicPaintedPanel deck = new GraphicPaintedPanel();
GridBagLayout gblDecks = new GridBagLayout();
gblDecks.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0};
gblDecks.rowHeights = new int[]{0, 0};
gblDecks.columnWeights = new double[]{0.15, 0.15, 0.15, 0.15, 0.15, 0.15, Double.MIN_VALUE};
gblDecks.rowWeights = new double[]{1.0, Double.MIN_VALUE};
deck.setLayout(gblDecks);
当我尝试向这个面板添加按钮时会出现问题,因为它们根据它们的数量占用空间,即使它们应该具有固定的大小。例如,如果我
for(int j=0; j<4; j++){
JButton activate= new JButton("ACTIVATE LEADER CARD");
GridBagConstraints gbcActivate = new GridBagConstraints();
gbcActivate.gridx = j;
gbcActivate.fill = GridBagConstraints.BOTH;
deck.add(activate, gbcActivate);
}
我创建了4个按钮,面板应该有4个按钮和2个#34;空格&#34;。但相反,它有4个按钮可以占用所有空间。
如果我这样做
for(int j=0; j<6; j++){
JButton activate= new JButton("ACTIVATE LEADER CARD");
GridBagConstraints gbcActivate = new GridBagConstraints();
gbcActivate.gridx = j;
gbcActivate.fill = GridBagConstraints.BOTH;
deck.add(activate, gbcActivate);
}
不应该修复尺寸吗?任何人都可以帮助我吗?
答案 0 :(得分:1)
gbcActivate.fill = GridBagConstraints.BOTH
如果我们转到tutorial,则说:
填写
当组件的显示区域大于组件的请求大小时使用,以确定是否以及如何调整组件的大小。有效值(定义为GridBagConstraints常量)包括NONE(默认值),HORIZONTAL(使组件足够宽以水平填充其显示区域,但不更改其高度),VERTICAL(使组件足够高以垂直填充其显示区域) ,但不要改变其宽度),和BOTH(使组件完全填满其显示区域)。
因此,它将填充显示区域,与您为columnWeights
等指定的内容无关。尝试将其删除或更改为GridBagConstraints.NONE
或按照上述评论中的建议,使用其他layout manager,例如FlowLayout