これは私がこの問題を解決するために使用したコードの断片です。
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 457, 330);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLayeredPane panel = new JLayeredPane();
panel.setBounds(0, 0, 457, 330);
frame.getContentPane().add(panel);
panel.setLayout(null);
JPanel background = new JPanel();
background.setBounds(0, 0, 457, 330);
panel.add(background);
background.setLayout(new MigLayout("","",""));
//In my particular problem I used some constraints, but they're not needed
backgroundLabels = new JLabel[NCOLS][NROWS];
for (int i = 0; i < NCOLS; i++)
for (int j = 0; j < NROWS; j++) {
backgroundLabels[i][j] = new JLabel(backgroundIcon);
//Assuming you have a backgroundIcon variable where you saved your icon
background.add(backgroundLabels[i][j], "cell " + i + " " + j);
}
JPanel characterPanel = new JPanel();
panel.setLayer(characterPanel, 1);
characterPanel.setBounds(0, 0, 457, 330);
panel.add(characterPanel);
characterPanel.setOpaque(false);
characterPanel.setLayout(new MigLayout("","",""));
characterLabels = new JLabel[NCOLS][NROWS];
for (int i = 0; i < NCOLS; i++)
for (int j = 0; j < NROWS; j++) {
characterLabels[i][j] = new JLabel("");
//Creates empty character labels. You can then add icons using setIcon()
characterPanel.add(characterLabels[i][j], "cell " + i + " " + j);
}
}
これを行う方法はいくつかあります。あなたは草のラベルにレイアウトマネージャを適用することができるので、それらにコンポーネントを追加することができます。この方法では、単純に芝生のタイルを表示するために 'GridLayout'を使うことができます。あるいは、芝生の画像を使って背景をペイントするカスタムコンポーネントを作ることもできます。もう一度、レイアウトマネージャを追加して、コンポーネントを追加することができます。どちらもメリットがありますが、カスタムパネルはもっと複雑ですが、コンポーネントのサイズをより細かく制御できます。ラベルは簡単ですが、アイコンのサイズではなく、内容ではありません – MadProgrammer
ラベルがアイコンのサイズ時間がある場合は、サンプルコードを投稿してください。 –
「私はこれを解決しました...」で質問を編集するのではなく、あなたの質問に回答を追加してください([mcve]形式のコードを含む)ので、将来この質問を見に来る人は、彼らにも同様の問題や疑問がある場合は、それを行う。 @MadProgrammerはあなたが作業するためのコードを掲載していないため、このサンプルコードを投稿しませんでしたが、ここにいくつかの[examples]があります(http://stackoverflow.com/questions/19125707/simplest-way-to-set-image- as-jpanel-background)と[here](http://stackoverflow.com/questions/1466240/how-to-set-an-image-as-a-background-for-frame-in-swing-gui-of -java) – Frakcool