因此,我编写了一个小的测试程序,以有趣地复制一个清单,从游戏,如我的世界和RuneS景。基本上是一个框架,里面有一个框架,里面有你物品的图片,还有一个滚动条,用来向下滚动你库存中的所有东西。我的库存中的“东西”将是稍后添加的带有自己功能的按钮,这样您就可以垂直滚动并查看所有的“东西”。现在,我已经添加了一些测试按钮来排除错误。基本上,我希望按钮是100,100,并将它们排在4行,然后转到下一列。我认为GridLayout是最好的选择,但是在添加到滚动窗格之后,它似乎添加了更多的行。好的,下面的代码跳下来了:
public class inventory extends JFrame{
public static void main(String[] args){
new inventory();
}
JPanel mainInv = new JPanel();
JScrollPane sp;
public inventory(){
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit tk = this.getToolkit();
setLocation(tk.getScreenSize().width/2-getWidth()/2, tk.getScreenSize().height/2-getHeight()/2);
setLayout(null);
mainInv.setSize(getWidth()-10, 1000);
mainInv.setBackground(Color.blue);
mainInv.setLayout(new GridLayout(8,4));
sp = new JScrollPane(mainInv, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
sp.setMaximumSize(new Dimension(400,400));
sp.setBounds(5, 5, 500-10, 500-130);
JButton[] testButs = new JButton[100];
for(int i = 0; i < 50; i++){
testButs[i] = new JButton("Test Button " + i);
testButs[i].setSize(100,100);
mainInv.add(testButs[i]);
}
add(sp);
setVisible(true);
}
}发布于 2014-04-13 08:08:35
对于GridLayout,行数是主要因素。
如果您有8行和4列只能容纳48个按钮,如果您尝试添加一个49按钮,它将创建第5列,而不是第9行。
您可以通过设置更多行的GridLayout来解决问题。
https://stackoverflow.com/questions/23040212
复制相似问题