基本的な目的は、3x3 パターンの 9 つの白い正方形で満たされた JPanel を持つことです。正方形は 150x150 の空白の白い .jpg ファイルです。後で、プログラムは空白の正方形を単純な画像の選択の 1 つに変更する必要があり、いつでも任意の正方形を変更できる必要があるため、この方法にする必要があります。問題は、簡単に言うと、NullPointerException が発生することです。配列をnullとして初期化することと関係があると想定する必要がありますが、そうしないとNetBeans(はい、NetBeans ...)が私に腹を立てるようです。配列のサイズを宣言しようとしても同じです。(それは... "ArrayType[arraysize] arrayName;"、はい?"
ええと、私はただ乱暴に推測しています。
編集 - NullPointerException は修正されましたが、空白 (白) の画像がフレームに表示されません。以下のコードは、新しい状態を反映するように編集され、より関連性の高い行が追加されました。
関連するすべてのコードは次のとおりです。
JFrame controller = new JFrame("SmartHome Interface");
controller.setVisible(true);
controller.setSize(480,500);
controller.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//[...]
JPanel labelPanel = new JPanel();
//[...]
labelPanel.setBackground(Color.GREEN);
//[...]
ImageIcon blank = new ImageIcon("../Images/blank.jpg");
//[...]
controller.add(labelPanel);
//[...]
JLabel[] labels = new JLabel[9];
for (int i = 0; i <= 8; i++)
{
int xLowBound;
int xUpBound;
int yLowBound;
int yUpBound;
//Maths for positioning the labels correctly. Should be 150px in size with 10px gaps each.
xLowBound = (i % 3) * 160;
xUpBound = xLowBound + 150;
yLowBound = (i / 3) * 160;
yUpBound = yLowBound + 150;
labels[i] = new JLabel();
labels[i].setIcon(blank);
labels[i].setBounds(xLowBound, yLowBound, xUpBound, yUpBound);
labelPanel.add(labels[i]);
}
また...ImageIconのファイルパスは正しいですか?コード自体は「src/smarthome」にあり、画像は「src/Images」にあります
また、フォーラムの慣習や行動規範などを破った場合はお詫びします。新入りさん、気をつけていたのですが、何か忘れてしまったのかもしれません。