JTable -> TableModeListener

2023-12-14

我有这个JTable有一个DefaultTableModel作为它的模型。 桌子上我有几个秋千组件,JComboBox and JCheckBox,通过设置在特定列上DefaultCellEditor and DefaultCellRenderer. The TableModelListener添加到表中以捕获可编辑列的更改。 其余列将显示所选组件的详细信息,即商品代码 -> 商品价格、商品数量、商品分类等。

我有这个问题,其中如果JComboBox(itemCode)更改,其他项目JComboBox(itemClassification)变化。但随着其他 JComboBox 的更改,我需要在同一张表上显示商品价格。这一变化重新激发了valueChanged无限循环的方法valueChanged.

我怎样才能摆脱无限循环的事情?


一种方法是检查更新事件以查看该事件针对哪一列,并忽略自动更新的列:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class TableProcessing extends JPanel implements TableModelListener
{
    public TableProcessing()
    {
        String[] columnNames = {"Item", "Quantity", "Price", "Cost"};
        Object[][] data =
        {
            {"Bread", new Integer(1), new Double(1.11), new Double(1.11)},
            {"Milk", new Integer(1), new Double(2.22), new Double(2.22)},
            {"Tea", new Integer(1), new Double(3.33), new Double(3.33)},
            {"Cofee", new Integer(1), new Double(4.44), new Double(4.44)}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames)
        {
            //  Returning the Class of each column will allow different
            //  renderers to be used based on Class
            @Override
            public Class getColumnClass(int column)
            {
                return getValueAt(0, column).getClass();
            }

            //  The Cost is not editable
            @Override
            public boolean isCellEditable(int row, int column)
            {
                return (column == 3) ? false : true;
            }
        };
        model.addTableModelListener( this );

        JTable table = new JTable( model );
        table.setPreferredScrollableViewportSize(table.getPreferredSize());

        JScrollPane scrollPane = new JScrollPane( table );
        add( scrollPane );

        String[] items = { "Bread", "Milk", "Tea", "Coffee" };
        JComboBox<String> editor = new JComboBox<String>( items );

        DefaultCellEditor dce = new DefaultCellEditor( editor );
        table.getColumnModel().getColumn(0).setCellEditor(dce);
    }

    /*
     *  The cost is recalculated whenever the quantity or price is changed
     */
    public void tableChanged(TableModelEvent e)
    {
        if (e.getType() == TableModelEvent.UPDATE)
        {
            int row = e.getFirstRow();
            int column = e.getColumn();

            if (column == 1 || column == 2)
            {
                TableModel model = (TableModel)e.getSource();
                int quantity = ((Integer)model.getValueAt(row, 1)).intValue();
                double price = ((Double)model.getValueAt(row, 2)).doubleValue();
                Double value = new Double(quantity * price);
                model.setValueAt(value, row, 3);
            }
        }
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("Table Model Listener");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new TableProcessing());
        frame.pack();
        frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args) throws Exception
    {
        EventQueue.invokeLater( () -> createAndShowGUI() );
/*
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
*/
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JTable -> TableModeListener 的相关文章

  • 初始向量(IV)的CTR模式使用

    据我所知 CTR 模式不使用初始向量 它只需要一个计数器 用给定的密钥对其进行加密 然后将结果与明文进行异或以获得密文 其他分组密码模式 例如 CBC 在进行加密之前 会使用初始向量对明文进行异或 所以这是我的问题 我在 Java 中有以下
  • 如何在谷歌地图中使用latlng字符串数组绘制多边形

    在我的应用程序中 我有包含 imagview 的 recyclerview 并且该 imageview 通过使用我存储在 sqlite 中的坐标包含静态地图图像 当我单击该图像时 我将该字符串数组格式的坐标传递给其他地图活动 然后使用该字符
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • 如何避免 Java 中的忙旋转

    我有一个多线程应用程序 其中一个线程向另一个线程发送消息 等待线程轮询消息并做出反应 处理锁 像这样 等待线程代码 while true if helloArrived System out println Got hello if bye
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • 如何让 HttpClient 返回状态码和响应正文?

    我试图让 Apache HttpClient 触发 HTTP 请求 然后显示 HTTP 响应代码 200 404 500 等 以及 HTTP 响应正文 文本字符串 重要的是要注意我正在使用v4 2 2因为大多数 HttpClient 示例都
  • 到底什么是哈希冲突

    HashMap 中的哈希冲突或哈希冲突并不是一个新主题 我遇到过几个博客和讨论板 以模糊且详细的方式解释如何产生哈希冲突或如何避免它 我最近在一次采访中遇到了这个问题 我有很多事情要解释 但我认为很难准确地给出正确的解释 抱歉 如果我的问题
  • 在 SWT 中单击鼠标触发事件?

    在SWT中 对于MouseListener接口 可用的方法有mouseUp mouseDown and mouseDoubleClick 如何根据用户点击触发事件 我们可以通过结合来做到这一点mouseUp and mouseDown 但没
  • 如何知道 glassfish 是什么 - 完整平台或网络配置文件?

    我已经安装了glassfish 我可以跑 asadmin version 它显示了它是什么版本 但如何知道它是 完整平台 还是 Web 配置文件 你可以使用 glassfish4 bin gt asadmin list containers
  • 整数与 int 比较

    我是新来的java 我现在正在学习非原始整数类型java 我知道以下比较无效并引发编译错误 String str c Char chr c if str chr return true 上面的代码片段给了我 Test java lineNu
  • 处理 ANTLR 4 中的错误

    遵循后接受的答案 https stackoverflow com a 18137301 2279200的指示处理 ANTLR4 中的错误 https stackoverflow com q 18132078 2279200问题 我遇到了以下
  • 如何使用键盘上的“删除”按钮作为从 JTable 中删除行的快捷方式[重复]

    这个问题在这里已经有答案了 可能的重复 如何制作删除按钮来删除JTable中的行 https stackoverflow com questions 13236206 how to make delete button to delete
  • iText7 将 SVG 添加到 PdfDocument 中以及可能出现的问题

    关于问题的答案 如何使用 iText7 将 SVG 添加到 PDF 这是一个链接点击这里 https stackoverflow com questions 50059456 how to add an svg to a pdf using
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • 将字符串转换为字符并按降序排序(ascii)

    我正在创建一个程序 该程序将使用户输入整数 一个接一个 存储在数组中并按降序显示整数 该程序还要求用户输入一个字符串 使用以下命令将其转换为字符string toCharArray 我已经正确地按降序显示整数 问题是我不知道如何按降序显示字
  • Wildfly 10.1 消耗所有核心

    我们最近将银行应用程序从 java 1 6 升级到 1 8 将 jboss 4 x 升级到 wildfly 10 1 我们观察到 java 消耗了机器上可用的所有核心 10 有人可以告诉是什么原因吗 通常情况下 jboss 4 x 的最大
  • 找出该月第一个星期日/星期一等的日期

    我想在java中检测每个月第一周 第二周的第一个星期日 星期一的日期 我怎样才能实现它 我已经检查了 java 中的 Calendar 类和 Date 类 但无法找到解决方案 所以请帮助我解决这个问题 Calendar calendar C
  • Java“非法访问操作”方法将被弃用? [复制]

    这个问题在这里已经有答案了 JDK 9 JVM 发出非法访问操作警告后 如果您使用一些非法访问 例如setAccessible 我的问题 Is setAccessible 以后会被封吗 此功能的官方参考 如果将被弃用 在哪里 我在任何地方都
  • Spring Boot中服务接口类的用途

    我的问题是关于接口类的使用 我对 Spring 还很陌生 所以如果这过于简单 请耐心等待 首先 当您可以在 BoxService 中声明 find all 时 这里拥有 IBoxService 接口有什么意义 其次 在控制器中如何使用IBo
  • 用 lambda 表达式替换匿名函数

    我在 Java 8 映射操作中传递一个函数 Intellij 告诉我它可以用 lambda 表达式替换 但我不知道如何在不创建中间对象结构的情况下做到这一点 这就是我所做的 List

随机推荐

  • 将路径参数值获取到 ORDS prehook 中

    有没有办法使用 get cgi env 从 url 获取路径参数 例子 https clientes codigo 我想从中获得价值 codigo路径参数 在端点上的处理程序 GET POST PUT 等中 可以获取路径参数值 但不清楚如何
  • 在 ES6 中创建带箭头或不带箭头的顶级函数有何优点/缺点?

    在 ES6 ES2015 中以这些不同的方式创建顶级函数有哪些优点 缺点 或者这只是品味 风格指南等问题 选项1 function square n return n n 选项2 var square function n return n
  • 使用 Activator.CreateInstance 创建的对象

    考虑下面的代码 void fun1 string typeName object adap Activator CreateInstance typeName adap dowork won t compile because of str
  • java.sql.SQLException:使用配置单元初始化数据库时无法启动数据库“metastore_db”错误

    我在 3 个集群上安装了 Hadoop 和 Hive 我可以从运行 HIVE 的集群节点登录到 hive root NODE 3 hive hive 使用配置初始化的日志记录 jar 文件 usr lib hive lib hive com
  • JavaScript 函数中 var 和 this 的区别?

    var tools tools triangle function var originX 0 var originY 0 var tools tools triangle function this originX 0 this orig
  • HTTP POST 方法是否以查询字符串形式发送数据?

    我想知道 HTTP 上的 POST 方法是否以 QueryString 形式发送数据 或者是否使用特殊结构将数据传递到服务器 事实上 当我分析从客户端到服务器的 POST 方法的通信 例如使用 Fiddler 时 我没有看到任何 Query
  • 暂时忽略 subversion 忽略设置

    我有一堆通常想要忽略的文件 因此我在全局忽略以及文件夹属性忽略列表中列出了文件扩展名 但是 我一次性需要查看工作副本中所有未版本控制的文件 甚至是那些我通常想忽略的文件 如果不清除全局忽略 然后删除忽略文件夹属性 进行检查 然后重新添加忽略
  • 将可编辑文本框添加到图表中的特定数据点

    我正在尝试实现可编辑文本框 chartjs 或融合图表中的解决方案都可以 在 fusioncharts 中尝试使用触发器捕获数据点上的用户点击事件 在此处检查 fusionchart 示例中的 jsfiddle dataPlotClick
  • Ansible - 将注册变量保存到文件

    如何将注册的变量保存到文件中 我从tutorial hosts web servers tasks shell usr bin foo register foo result ignore errors True shell usr bin
  • PDO:行名称作为结果数组的索引

    我有这个 旧式 非 PDO MySQL 查询 代码没有收紧 只是为了准确地显示我的意思
  • Azure 应用服务上具有 OWIN“SystemWeb”的 Web API 应用程序

    我正在创建使用 NET 中的 Identity 2 1 0 框架的应用程序 我在 Visual Studio 2015 中作为空 Web 应用程序 模板 启动了项目 现在 我用Microsoft AspNet WebApi Owin 并且M
  • 如何检查给定用户是否是内置管理员组的成员?

    我需要以编程方式 在 NET 中 检查给定用户 域帐户 是否是当前计算机 执行应用程序的计算机 上内置管理员组的成员 是否可以 我不了解 Net 但在win32中 简单的方法是调用IsUserAnAdmin 如果您需要更多控制 您可以打开进
  • 如何将 Flask+React 应用程序部署到 Azure Web 服务

    我一直在我的本地主机上开发这个应用程序 它以 Flask 作为后端 本地主机 5000 和 React 作为前端 本地主机 3000 而且他们沟通得很好 现在我应该把它放在网上 以便其他人也可以看到它 我在 Azure 上没有太多经验 但是
  • 在 silverlight 应用程序中显示 pdf。 PDF 到 XAML

    我需要创建 silverlight 应用程序 客户将在其中看到一些 pdf 文件 PDF 文件必须位于 silverlight 控件内 并且不能呈现为图像 客户想要选择文本 为此目的我需要一些free将 pdf 文件转换为 xaml 的库或
  • Keras 中损失函数的导数

    我想在 keras 中创建以下损失函数 Loss mse double derivative y pred x train 我无法合并衍生术语 我努力了K gradients K gradients y pred x train x tra
  • WiX ICE30 错误但目录正确

    我的 WiX 3 10 3 3007 项目有 2 个不同的 web config 文件 它们安装在 2 个不同的位置 我的构建中的 2 个错误是 错误 ICE30 目标文件 svcenub9 con Web config 由 LFN 系统上
  • 什么是 Docker 镜像“层”?

    我是 Docker 的新手 我正在尝试确切地了解 Docker 是什么image是 Docker 镜像的每个定义都使用术语 层 但似乎没有定义 层 的含义layer 来自官方Docker 文档 我们已经看到 Docker 镜像是启动 Doc
  • 如何让 Twig 将 HTML 输出写入文件而不是浏览器?

    我有一个想要渲染的 Twig 模板 html 文件 将标记替换为 PHP 文件中的值 然而 我不想将渲染结果发送到浏览器 而是将其写入新的 html 文件 我想 Django 模板的解决方案也是类似的 我怎样才能在 PHP 中做到这一点 您
  • 按位乘以 5/8 观察溢出

    我被分配了一大堆问题 这是唯一一个我不知道如何优化的问题 目标是乘以 5 8 舍入到 0 并防止溢出 运算顺序是乘以 5 然后除以 8 即 11 5 8 6 优化的目标是使用 12 个或更少的运算符 规定仅此而已 允许 gt 运算和8 位整
  • JTable -> TableModeListener

    我有这个JTable有一个DefaultTableModel作为它的模型 桌子上我有几个秋千组件 JComboBox and JCheckBox 通过设置在特定列上DefaultCellEditor and DefaultCellRende