当前位置: 首页 > 知识库问答 >
问题:

制作自定义JTableModel以监听ArrayList中的更改

宋健柏
2023-03-14

我有一份客户名单。每个客户都有一份账户清单,每个账户都有一份交易清单。

最近,我一直在使用ObjectOutputStream/ObjectInputStream为我的程序实现导入/导出功能。这有效,它可以正确保存所有内容并加载。

我的问题是,一旦ArrayList被更改,JTable不会自动更新(我创建了一个自定义JTableModel,目前只将每个单元格设置为不可编辑。是否有任何侦听器符合我的需要?我的CustomJTableModel扩展了DefaultTableModel。

我将触发器加载/保存到一个自定义的MainMenu类中,该类包含一个JMenuBar,它不直接知道TableModel或JTable(否则,我可以采用“廉价”的方式,只需再次添加它)。

有些html" target="_blank">方法,如fireTableDataChanged,但只侦听JTable本身。

不确定我是否需要发布任何代码,认为这可能是一个简单的问题,并且有一个合适的监听器。

共有2个答案

应嘉容
2023-03-14

我的问题是一旦ArrayList被更改,JTable不会自动更新

您不应该更改ArrayList。

ArrayList应该用作TableModel的数据结构。然后,如果您想对ArrayList进行更改(即添加/删除行),则应该通过TableModel完成。

有关使用此方法创建自定义模型的分步示例,请参阅行表模型。

另一方面,如果您的问题是存储在ArrayList中的对象的属性发生了更改,那么是的,您需要使用观察器模式。

傅泉
2023-03-14

对于您的问题,我的建议是在您的JTable类中实现(Java观察者接口),并在您的类中实现(Java可观察接口)来利用和修改ArrayList。这样,每次对arrayList发生更改时,都会调用update方法,从而更新JTable。

这是一个教程,详细介绍了我上面的解释

public class JTable implements Observer
{

// this is the method that will be invoked everytime a change has occured.
 public void update(Observable obs, Object obj)
   {
      // To implements as required
   }

}

public class Store implements Observable
{
   ArrayList<Customers> listOfCustomers;

 public void setValue(Customer n)
   {
      this.listOfCustomers.Add(n);
      setChanged();
      notifyObservers(); // this will notify your JTable
   }
}

这只是如何实施系统的开始。

 类似资料:
  • 问题内容: 我想知道是否有人可以帮助我理解如何准确地创建不同的自定义事件侦听器。 我没有事件的具体案例,但我想大致了解它是如何完成的,因此可以将其应用于需要的地方。 我想做的是,以防万一有些人可能需要知道的是: 问题答案: var evt = document.createEvent(“Event”); evt.initEvent(“myEvent”,true,true);

  • 问题内容: 我想创建自己的Button类,该类将具有Sprite,并且每当我触摸它时,它将成长或旋转,等等,该类还将具有Draw和Update函数。 要检查我是否触摸它,我可以检查子画面矩形是否包含屏幕类的touchdown和touchup方法中触摸的位置。 我不想这样做,我想做一些类似android button click listener的事情,这可能吗? 就像是 有可能吗 问题答案: 当然

  • 问题内容: 假设我想为自己的班级创建自己的事件监听器,该怎么做?我需要手动维护线程吗? 问题答案: 创建一个将由您的活动实现的接口: 现在,您需要知道事件实际发生的时间。例如,当用户触摸屏幕上的一个点时,重写onTouchEvent方法: 同样,您可以创建所需的特定事件。(示例可能是按下,等待2秒钟然后松开-您需要在touch事件中执行一些逻辑操作)。 在您的活动中,可以使用customView对

  • 本文向大家介绍Spring 实现自定义监听器案例,包括了Spring 实现自定义监听器案例的使用技巧和注意事项,需要的朋友参考一下 应用场景: 在一般的javaWeb项目中经常有一些缓存是需要再项目启动的时候加载到内存中,这样就可以使用自定义的监听器来实现。 1、在web.xml中声明 2、创建类OmsConfigLoader 实现接口 ServletContextListener,项目启动的时候

  • 本文向大家介绍C#自定义事件监听实现方法,包括了C#自定义事件监听实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#自定义事件监听实现方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我做了一个自定义的Hibernate Event监听器,扩展了org.hibernate.event.PreInsertEventListener。自定义侦听器会覆盖onPreInsert方法并设置“联系人”实体的字段,然后再使用DAO将其保存在数据库中。 问题是,在侦听器为其提供值之前该字段为null,并且默认的hibernate事件侦听器在我的自定义侦听器之前自动触发。当他们检查d