如何绑定一个List(一次或多次)?

2023-11-29

我遵循演示模型模式来编码一些屏幕。

  • 我把一些豆子储存在一个ArrayList
  • 我将在一个列表中显示该列表的内容JTable,感谢一个AbstractTableModel
  • 我也想展示some组合框中此列表中的记录(以表单形式)和其他一些在 JList 中,同时
  • 这三个屏幕(及其模型)彼此独立

如何管理在我的列表中添加{一个或多个}/删除{一个或多个}并在任何地方“实时”查看更改?

我即将编写自己的 ObservableList 或围绕 EventDispatcher 实现它......你觉得怎么样?


PS:

  • 我知道在 C# 中BindingList对于这个目的有帮助,那么 Java 呢?
  • 我已经能够显示每个 bean 的更新,感谢PropertyChangeSupport.

让你AbstractTableModel实施ListModel,这两者都可以使用JComboBox andJ列表。您可以根据需要将方法转发到默认模型实现。

附录:SharedModelDemo, 中提到如何使用表格,是一个可以帮助您入门的示例。它extends DefaultListModel implements TableModel,虽然你应该这样做extends AbstractTableModel implements ListModel

附录:作为参考,这里是最小实现和三个测试实例的概述。我使用了默认的组合和列表实现,但如果需要,您可以使用相应的抽象实现。

public class SharedModel extends AbstractTableModel
        implements ComboBoxModel, ListModel {
    private ComboBoxModel comboModel = new DefaultComboBoxModel();
    private ListModel listModel = new DefaultListModel();

    //ComboBoxModel
    @Override
    public void setSelectedItem(Object anItem) {
        comboModel.setSelectedItem(anItem);
    }

    @Override
    public Object getSelectedItem() {
        return comboModel.getSelectedItem();
    }

    // ListModel
    @Override
    public int getSize() {
        return listModel.getSize();
    }

    @Override
    public Object getElementAt(int index) {
        return listModel.getElementAt(index);
    }

    @Override
    public void addListDataListener(ListDataListener l) {
        listModel.addListDataListener(l);
    }

    @Override
    public void removeListDataListener(ListDataListener l) {
        listModel.removeListDataListener(l);
    }

    // TableModel
    @Override
    public int getRowCount() {
        return 0;
    }

    @Override
    public int getColumnCount() {
        return 0;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        return null;
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                SharedModel sm = new SharedModel();
                JTable table = new JTable(sm);
                JList list = new JList(sm);
                JComboBox check = new JComboBox(sm);
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何绑定一个List(一次或多次)? 的相关文章

随机推荐

  • 从 python 字典中打印列

    我有一本一周多提交的字典 我想以每周日历样式的列将它们打印出来 Fri Commit 04 15PM Move flex to mixin and do mobile first queries n Commit 03 52PM use p
  • 如何在 WPF 中平铺和叠加图像?

    我对 WPF 非常陌生 并尝试将应用程序从 VB6 移植到 C 和 XAML 我现在需要做的是用许多小图像创建一个大图像 这些小图像排列成一系列 瓷砖 其中一些较小的将有叠加在其上的覆盖层 在 VB6 中 只需使用 PictureBox 控
  • 在方法内使用扫描仪

    我是编程新手 所以如果有一个非常简单的答案 我深表歉意 但我似乎找不到任何实际的答案 我正在使用扫描仪对象在猜数字游戏中进行用户输入 扫描仪在我的主方法中声明 并将在其他单个方法中使用 但该方法将在各处被调用 我尝试将其声明为静态 但 Ec
  • 在后台播放网页中的声音文件

    我想在我的网页上后台播放声音文件 不希望出现媒体播放器 UI 我的网站将在 Fire Fox 上运行 我使用了 Embed 元素并设置了 Hidden 属性是真实的问题是 除非我删除隐藏属性 否则不会播放任何声音 在这种情况下 声音文件会播
  • React 组件渲染方法无缘无故被调用两次

    import App css import SolarSystem from components solarSystem solarSystem class App extends React Component componentDid
  • Akka 整合并发数据库请求

    我希望能够向多个数据存储库发出并发请求并合并结果 我试图了解我的方法是否有效 或者是否有更好的方法来解决这个问题 我绝对是 Akka Spray Scala 的新手 并且真的想更好地了解如何正确构建这些组件 任何建议 提示将不胜感激 试图让
  • 如何将设计器生成的类的基类从 System.Windows.Forms.Form 更改为我自己的 BaseForm

    每次我向 WinForms 项目添加一个新的 Form 时 设计器都会生成一个继承自 System Windows Forms Form 的新类的代码 出于某种原因 我希望它继承自我自己的 BaseForm 类 除了自己编辑生成的文件之外
  • shell级别的PostgreSQL数据库逆向工程

    我碰巧用大型数据库做了一些调节工作 但我对此没有那么丰富的经验 所以我想明智的做法是在我的本地主机上创建类似的数据库 以免弄乱原始数据库 这是我的问题 是否可以生成SQL脚本将创建我想要的精确表 我的意思是在 MySQL GUI 工具上有这
  • 如何使用 Node.js 在 a 中使用通配符从目录中读取文件

    我需要使用 Node js 从目录中读取文件 文件名都是 json 如何在 Node js 中对文件名部分使用通配符 您可以使用glob npm用于使用通配符文件名模式匹配 var glob require glob options is
  • 如何在iOS SDK中创建一个伞形框架?

    我想在 iOS SDK 中创建一个伞形框架 我的要求是 我有一个名为 框架 A 的框架 我想创建另一个名为 框架 B 的框架 我想将 框架A 作为子框架添加到 框架B 中 用户只需在项目中导入 框架B 即可同时使用 框架A 和 框架B 换句
  • 子对象初始化的顺序是什么?

    让我们有一个对象o类的某种类型 其中包含成员子对象so and sso另一个类类型 考虑以下示例 include
  • 如何从 FiPy 中的 3D 变量中提取平面(3D 到 2D)

    我在 3D 网格上有一个变量 我正在尝试制定一个计划 我很惊讶这个问题以前没有被问过 它看起来是一个简单而常见的问题 但我还没有找到任何好的方法 我将不胜感激任何建议 假设我有一个 3x3x5 的平行六面体 并且我正在尝试提取 z 平面 f
  • 由于错误 80020101,无法完成操作。IE [重复]

    这个问题在这里已经有答案了 可能的重复 Ajax请求问题 错误80020101 我正在使用 JQuery 1 64 这是我重置计时器的代码 var message Logged in var myTimeout setTimeout tim
  • 如何将 IIS 服务器中的特定端口重定向到其他端口

    我的 URL 重写规则仅适用于 IIS 中的端口 80 重写适用于 http 本地主机 80 gt http 本地主机 8100 重写适用于 http localhost 80 重定向 gt http 本地主机 8100 重写不适用于 ht
  • 为无效迭代器定义了哪些操作?

    作为后续关于比较无效迭代器的问题 我试图在 C 标准中找到无效迭代器允许的表达式的定义 搜索 无效迭代器 仅在 24 2 1 11 中找到一个引用 它说无效的迭代器可能是 单一的 但仅说明取消引用它们可能是未定义的行为 没有给出进一步的语义
  • 使用 ASP.Net 教授初学者 Web 开发的小项目想法 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我几周前就问过这个问题 如
  • 尝试将数据插入 Atlast 服务器上的集合时,命令失败并出现错误 8000 (AtlasError)

    我正在使用 mongoDB Atlas 创建一个 mongodb 一切似乎都很好 当我运行程序时 服务器连接成功 但是 当我尝试将数据插入集合时 它给出了错误 命令失败 错误 8000 AtlasError 我读到另一篇文章说我必须使用不同
  • 使用 JSF 的 Servlet 过滤器

    我尝试使用 JSF 配置 Servlet 过滤器 我在这里遇到很多问题 我也使用 PrimeFaces 这是我的 web xml
  • 如何在不root的情况下禁用Android设备的hdmi端口?

    我想知道是否有一种方法可以在不root的情况下禁用android设备的hdmi端口 从 Android 4 2 SDK 级别 17 开始 DisplayManager API http developer android com refer
  • 如何绑定一个List(一次或多次)?

    我遵循演示模型模式来编码一些屏幕 我把一些豆子储存在一个ArrayList 我将在一个列表中显示该列表的内容JTable 感谢一个AbstractTableModel 我也想展示some组合框中此列表中的记录 以表单形式 和其他一些在 JL