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