You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向现有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:55:27