【发布时间】:2015-03-23 20:44:52
【问题描述】:
基本目标是让 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”中
如果我违反了任何论坛约定/行为准则/等,我们深表歉意。纽比在这里,尽量小心不要,但我可能忘记了什么。
【问题讨论】:
标签: java swing nullpointerexception jpanel imageicon