我正在向面板动态添加对象,然后添加到我的边框布局。我需要西部,中部和东部的大小相同。这就是我到目前为止所做的:
static int width = 300;//Screen width
static int height = width / 16 * 9;//Screen height
static int scale = 3;
private JFrame frame;
//player is an object from a Player Class will an arrayList of Items..
public void LoadPlayer(Player player){
int count = 1;
for (Items i : player.getAllItems()){
JPanel jp= new JPanel();
JLabel jlItem= new JLabel(i.getName());
BorderLayout bl = (BorderLayout) (mainPanel.getLayout()) ;
jp.add(jlItem);
jp.setBorder(BorderFactory.createLineBorder(Color.BLACK));
if (bl.getLayoutComponent(BorderLayout.WEST) == null){
mainPanel.add(jp,BorderLayout.WEST);
jp.setSize(frame.getWidth()/3, height);
System.out.println("adding item " + count+" to west panel");
}
else if (bl.getLayoutComponent(BorderLayout.CENTER) == null){
jp.setSize(frame.getWidth()/3, height);
mainPanel.add(jp,BorderLayout.CENTER);
System.out.println("adding item " + count+" to center panel");
}
else if (bl.getLayoutComponent(BorderLayout.EAST) == null){
mainPanel.add(jp.BorderLayout.EAST);
jp.setSize(frame.getWidth()/3, height);
System.out.println("adding item" + count+" to east panel");
}
count++;
}
}
我希望这会奏效,但事实并非如此。我做了一些搜索,但似乎找不到任何说明你可以或不能设置WEST
,CENTER
和EAST
面板大小的内容。
有谁知道怎么做?
答案 0 :(得分:5)
我需要西部,中部和东部都是相同的大小..
GridLayout
的BorderLayout.CENTER
中的单行nested layout即可实现此目标。
答案 1 :(得分:2)
您永远不会在组件上使用setSize()方法。这是布局管理员的工作。
如果您希望面板大小相同,可以使用GridLayout。