我目前正在尝试用按钮填充 JPanel(使用 GridLayout)。这些按钮应该是具有设定宽度的正方形。 该程序应该能够调整比赛 field 的大小(n*m 个按钮)。问题是,按钮会自动拉伸(stretch)以完全填充 JScrollpane,完全忽略设置的高度和宽度。从而使滚动条变得不必要。 这是我的代码:
创建面板:
panel_game = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane(panel_game);
尝试调整 JPanel 的大小:(其中 x 和 y 是按钮的数量,zoomlvl 是大小)
panel_game.setLayout(new java.awt.GridLayout(x, y));
panel_game.setBounds(panel_game.getX()+5,panel_game.getY()+5,x*zoomlvl-5,y*zoomlvl);
panel_game.setPreferredSize(new Dimension(x*zoomlvl,y*zoomlvl));
并添加按钮:(f 是我的游戏场,一个 2D 数组)(buttons 是一个数组列表,包含我的按钮)
for(int i=0; i<f.getSize()[0]*f.getSize()[1];i++){
buttons.add(new JButton());
buttons.get(i).setSize(zoomlvl, zoomlvl);
buttons.get(i).setPreferredSize(new Dimension(zoomlvl,zoomlvl));
panel_game.add(buttons.get(i));
}
我不知道如何告诉 Java 停止自动调整按钮等的大小。 如有帮助,我们将不胜感激:)
最佳答案
GridLayout 的构建是为了用组件填充使用它的容器。如果容纳按钮的容器尺寸受到限制,则按钮将拉伸(stretch)或填充以尽可能紧密地填充该容器。一个解决方案可能是嵌套布局管理器,这样就不会发生这种情况,但如果没有更多代码,我无法给出更具体的建议,特别是 minimal example program 。图片也可能有帮助。
关于java - JPanel 在 JScrollPane 中填充了按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22460834/