0
我将Arraylist中的JLabel添加到JPanel,它们只会在面板上设置布局时显示,但我想设置标签的位置,我尝试使用panel = new JPanel(null);
所有标签不显示。JPanel(null)不显示JLabels
框架:
public static void Frame(){
panel = new JPanel(null);
JFrame frame = new JFrame("New");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
frame.setSize(400,400);
frame.add(panel);
}
ArrayList的迭代,增加了标签面板
private static void printArray() {
for(int i = 0; i < food.size(); i++){
component = new JLabel(new Food(food.get(i).getColor(),
food.get(i).getIconHeight(), food.get(i).getIconWidth(),
food.get(i).getLocationX(), food.get(i).getLocationY()));
panel.add(component);
component.setLocation(food.get(i).getLocationX(),
food.get(i).getLocationY());
}
}
我可以从调试看到它绝对是在获取定位信息,那么,为什么不把它放在这个位置。
猜猜“布局管理器”做了什么工作?猜猜将它设置为null时会发生什么 – MadProgrammer
*“我将Arraylist中的JLabel添加到JPanel,并且只有当我设置布局时才会显示*” - 这是正确的,*“但我想设置位置我自己的标签“* - 嗯,首先,我会问为什么?你想做什么,可用的布局管理员不能做什么? – MadProgrammer
@MadProgrammer hey mate im遵循以下代码http://www.camick.com/java/source/MotionWithKeyListener.java,看起来好像他做了同样的事情,它的工作正常,他的代码。将layout设置为null的原因是我可以更新标签的位置,这样我就可以用键盘输入“移动”它,并且在这个文档中他们还建议将它设置为null https://docs.oracle.com/ javase/tutorial/uiswing/layout/none.html Ps热爱你的工作。 – Ross