基本目标是让 JPanel 以 3x3 图案填充 9 个白色方块;方块是 150x150 空白的白色 .jpg 文件。一定是这样,因为以后,程序必须将空白方块更改为一组简单图像中的一个,并且必须能够随时更改任何方块。简单地说,问题是我得到了 NullPointerException。我不得不假设这与将数组初始化为空有关,但如果我不这样做,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”中
如果我违反了任何论坛约定/行为准则/等,我们深表歉意。纽比在这里,尽量小心不要,但我可能忘记了一些事情。