向现有JPanel中添加预制动态JPanel表单时的异常与布局实现问题求助
向现有JPanel中添加预制动态JPanel表单时的异常与布局实现问题求助
我正在为商店库存物品开发一个动态UI。目前我的MainMenu是一个JFrame表单,它支持通过左侧的JTree或顶部的JTextField选择库存元素,这部分的功能逻辑已经调试完成。但现在我遇到了两个核心问题:如何正确将预制的DisplayItem JPanel表单添加到带有JScrollPane的JPanel中,以及调用过程中出现的异常问题。
DisplayItem的构造函数代码如下,它负责根据传入的ID从Excel读取指定数据并渲染面板:
public DisplayItem(int ID) throws IOException{ initComponents(); ArrayList<Integer> cellsWanted = new ArrayList<>(Arrays.asList(0, 1, 4, 5, 16)); ArrayList<String> list = readSelect(ID, cellsWanted); BufferedImage img = ImageIO.read(new File(list.get(4))); ImageIcon icon = new ImageIcon(img); DisplayID.setText(list.get(0)); DisplayName.setText(list.get(1)); DisplayDescription.setText(list.get(2)); DisplayLocation.setText(list.get(3)); DisplayImage.setIcon(icon); }
为了测试DisplayItem的渲染效果,我暂时给页面顶部的“In”按钮绑定了如下事件处理逻辑:
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) { try { // TODO add your handling code here: jPanel9.add(new DisplayItem(20)); } catch (IOException ex) { Logger.getLogger(MainMenu.class.getName()).log(Level.SEVERE, null, ex); } }
理论上,这段代码应该创建一个ID为20的DisplayItem实例,通过Apache POI从Excel对应行读取数据,生成完整的面板后添加到jPanel9中。我希望这些DisplayItem面板能通过GroupLayout实现垂直堆叠的效果,但每次点击按钮后,程序都会输出如下错误日志:
AWT-EventQueue-0 ERROR Log4j API could not find a logging provider.
同时,点击一次按钮后,这个“In”按钮就无法再次触发点击事件了。我想搞清楚:
- 为什么会抛出
IOException? - 我当前添加面板的方式是否存在错误?
- 如何正确实现
DisplayItem面板的垂直堆叠布局?
如果有对应的解决方案或者可以参考的学习资源,麻烦分享给我,非常感谢。
补充说明:原提问者还提供了三个类的完整代码(DisplayItem、MainMenu、ExcelRead),因代码长度限制未直接贴出。
备注:内容来源于stack exchange,提问作者Victor Euan Jr
相关产品推荐
相关产品推荐

