1
public class TestPane extends JPanel {
public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
ImageIcon grassIcon = new ImageIcon("C:\\Users\\Pamvotis\\Desktop\\Project\\img\\icon.png");
JLabel labels = new JLabel();
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 6; col++) {
gbc.gridx = col;
gbc.gridy = row;
CellPane cellPane = new CellPane();
Border border = null;
if (row < 9) {
if (col < 5) {
border = new MatteBorder(1, 1, 0, 0, Color.BLACK);
} else {
border = new MatteBorder(1, 1, 0, 1, Color.BLACK);
}
} else {
if (col < 5) {
border = new MatteBorder(1, 1, 1, 0, Color.BLACK);
} else {
border = new MatteBorder(1, 1, 1, 1, Color.BLACK);
}
}
cellPane.setBorder(border);
if ((row==0)&&((col==2)||(col==3))) {
cellPane.setBackground(Color.RED);
} else if ((row==9)&&((col==2)||(col==3))) {
cellPane.setBackground(Color.WHITE);
labels = new JLabel(grassIcon);add(labels);
} else {
cellPane.setBackground(Color.GREEN);
}
add(cellPane, gbc);
}
}
}
私はこのコードを持っていますが、問題はプログラムを実行するたびにイメージのラベルがグリッドの後の最初の行に配置されることです。それは、グリッドの最初の行またはグリッドの後の最初の行に常にラベルが表示されるようにしています。誰もこれで私を助けることができますか?JavaのGridLayout Panelの特定のセルにラベルを追加するにはどうすればよいですか?
add(...)文でどのように制約を指定する必要がありますか?申し訳ありませんが、私は非常にjavaで新しいです – helpme
@helpme、私はあなたの要件が何であるか分かりません。なぜ同じループのグリッドに2つのコンポーネントを追加しようとしているのかわかりません。おそらく、ラベルをパネルではなくCellPaneに追加したいのですか?繰り返しますが、CellPaneが何であるか、またはセルペインでどのレイアウトマネージャを使用しているかわかりません。 「私はJavaで非常に新しいです」 - [Swingチュートリアル](http://docs.oracle.com/javase/tutorial/uiswing/TOC.html)を参考にしてください。それはすべてのSwingの基礎の実例を持っています。私のシンプルな提案があなたを助けない場合は、「レイアウトマネージャ」セクションに作業例があります。 – camickr
また、1行にコードブロックを書き込まないでください。各Java文は、読みやすく、保守しやすくするために、独自の行に記述する必要があります。編集を参照してください。 – camickr