因此,我正在编写一个小型测试程序,以便从诸如minecraft和runescape等游戏中复制库存。基本上是一个框架,里面有另一个框架,里面有你的项目的图片,还有一个滚动条,向下滚动你库存中的所有东西。我的库存中的“Stuff”将是稍后添加的按钮,具有自己的功能,因此您可以垂直滚动查看所有“内容”。现在我有一些测试按钮被添加到deomsntrate错误。基本上我希望按钮为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);
}
}
答案 0 :(得分:0)
使用GridLayout时,行数是主要因素。
如果您有8行和4列只能容纳48个按钮,如果您尝试添加第49个按钮,它将创建第5列而不是第9行。
您可以通过设置更多行的GridLayout来解决您的问题。