ArraylistからJPanelにJLabelsを追加しています。パネルにレイアウトを設定しても表示されますが、試してみるとラベルの位置を自分で設定したいのです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からJPanelにJLabelsを追加しています。レイアウトを設定すると表示されます。 " - 正しいですが、*"しかし、自分自身のラベル "* - さて、まず、私はなぜ尋ねるのだろうか?利用可能なレイアウトマネージャができないことを何をしようとしていますか? – MadProgrammer
@MadProgrammer私はこのコードに従っています。http://www.camick.com/java/source/MotionWithKeyListener.javaこれは同じことをしているようですが、彼のコードはうまくいきます。レイアウトをnullに設定する理由は、ラベルの位置を更新してキーボード入力で「移動」できるようにするためです。このドキュメントでは、nullに設定することも推奨しています。https://docs.oracle.com/ javase/tutorial/uiswing/layout/none.html Psあなたの仕事が大好きです。 – Ross