Java jTable 定义单元格上的颜色行更改

2024-04-09

大家好,我没有发现下面的代码有什么不正确的地方。它可以很好地填充表格和标题。然而,当我改变第 1 行,第 1 列 to test然后单击它不会像我预期的那样为该行着色。然后单击我单击的那个会变成绿色,从那时起我单击桌子上的任何地方都会变成绿色。

该列不会改变1(公司)因为这将是要进行更改的默认列。这row是这里唯一的动态数字。

测试流程:

  • 双击 IBM。
  • type in test.
  • 单击任何其他单元格以保存该单元格值。
  • 该行未更改(第 1 行)。
  • 再次单击测试单元。
  • 所有行都将变为绿色。

预期流量:

  • 双击 IBM。
  • type in test.
  • 单击任何其他单元格以保存该单元格值。
  • 更改为的单元格test更改该行green.
  • 点击Shares对于细胞(3, 3).
  • 双击并更改4000 to 1000.
  • 单击任何其他单元格以保存该单元格值。
  • 更改为的单元格1000更改该行red.

填充表和标题:

单击并更改第 1 行,第 1 列价值test:

编辑后将该单元格单击到另一个单元格上:

现在,单击任何其他单元格(请注意测试行不是应有的绿色):

现在单击我编辑的单元格test:

你在上面看到它只是给我点击的每一行着色,不管我说的逻辑如何

if ("test".equals(type)) {....

java代码:

@SuppressWarnings("serial")
public class TableRowRenderingTip extends JPanel {
    public TableRowRenderingTip() {
        Object[] columnNames = {"Type", "Company", "Shares", "Price", "Boolean"};
        Object[][] data =
        {
            {"Buy", "IBM", new Integer(1000), new Double(80.5), Boolean.TRUE},
            {"Sell", "Dell", new Integer(2000), new Double(6.25), Boolean.FALSE},
            {"Short Sell", "Apple", new Integer(3000), new Double(7.35), Boolean.TRUE},
            {"Buy", "MicroSoft", new Integer(4000), new Double(27.50), Boolean.FALSE},
            {"Short Sell", "Cisco", new Integer(5000), new Double(20), Boolean.TRUE}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames) {
            @SuppressWarnings({ "unchecked", "rawtypes" })
            public Class getColumnClass(int column) {
                return getValueAt(1, column).getClass();
            }
        };

        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Border", createBorder(model));
        add(tabbedPane);
    }

    private JComponent createBorder(DefaultTableModel model) {
        JTable table = new JTable(model) {
            private Border outside      = new MatteBorder(1, 0, 1, 0, Color.RED);
            private Border _outside     = new MatteBorder(1, 0, 1, 0, Color.GREEN);
            private Border inside       = new EmptyBorder(0, 1, 0, 1);
            private Border highlight    = new CompoundBorder(outside, inside);
            private Border _highlight   = new CompoundBorder(_outside, inside);

            public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                JComponent jc = (JComponent)c;
                String type = (String)getModel().getValueAt(convertRowIndexToModel(row), 1);

                if (isRowSelected(row)) {           
                    if ("test".equals(type)) {
                        jc.setBorder( _highlight ); // Green color
                        jc.setBackground(Color.GREEN);
                    } else {
                        jc.setBorder( highlight ); //Red color
                    }
                }

                return c;
            }
        };

        //table.setPreferredScrollableViewportSize(table.getPreferredSize());
        //table.changeSelection(0, 0, false, false);        
        return new JScrollPane( table );
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    public static void createAndShowGUI()
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("Table Row Rendering");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( new TableRowRenderingTip() );
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

因此,不用说,至少可以说,我有点沮丧,因为我已经为此工作了几个小时,试图找出可能出现的问题。

我确信我正在寻找的事情会很简单......


如果测试条件不成立,您会忘记设置边框并突出显示回默认值。例如

if (isRowSelected(row)) {
    if ("test".equals(type)) {
        jc.setBorder(_highlight); // Green color
        jc.setBackground(Color.GREEN);
    } else {
        jc.setBorder(highlight); // Red color
    }
} else {
    jc.setBorder(null);
    jc.setBackground(null);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java jTable 定义单元格上的颜色行更改 的相关文章

  • 将 MouseListener 添加到面板

    我正在尝试将鼠标操作添加到我的面板中 这就是程序应该做的事情 编写一个程序 允许用户通过按三下鼠标来指定一个三角形 第一次按下鼠标后 画一个小点 第二次按下鼠标后 绘制一条连接前两个点的线 第三次按下鼠标后 绘制整个三角形 第四次按下鼠标会
  • 本地开发的 Azure Functions 扩展包版本问题

    我有一个带有队列触发器的 Java 11 Azure 函数 该函数在部署到 Azure 时按预期工作 并正确从定义的服务总线主题中提取消息 但是 运行相同的功能locally除非我回滚版本 否则不起作用Azure Functions 绑定扩
  • 记录共享和映射的诊断上下文

    据我所知 其他人做了什么来解决 Commons Logging 项目 针对 NET 和 Java 不支持映射或嵌套诊断上下文这一事实 执行摘要 我们选择直接使用实现者日志框架 在我们的例子中为 log4j 长答案 您是否需要一个抽象日志框架
  • JUnit5 平台启动器 API - 如果没有至少一个测试引擎,则无法创建启动器

    我正在尝试升级我们的自动化测试套件的测试能力以接受 JUnit5 测试并遵循JUnit 平台启动器 API 说明 https junit org junit5 docs current user guide launcher api我收到错
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 如何将 Java 地图转换为在 Scala 中使用?

    我正在开发一个 Scala 程序 该程序调用 Java 库中的函数 处理结果并生成 CSV 有问题的 Java 函数如下所示 Map
  • “Electron”中“BrowserView”和“renderer” React 页面之间的消息

    我正在尝试弄清楚如何在两者之间交换消息main过程和BrowserView 我一直在使用ipc在 之间main过程和renderer 简单 的过程react renderer page 但现在 使用相同的技术 我在console of th
  • 如何在 JPA 和 Hibernate 中将数据库生成的列值定义为只读字段?

    使用 MariaDB 10 2 可以定义日期时间的默认值 例如创建和最后修改 我应该如何将此列作为只读字段访问 因为这个值应该只在数据库的控制之下 并且不应该从代码中修改 但我想在代码中读取这个属性 这很简单 只需设置insertable
  • 在 Java 中创建 XML 文件的最佳方法是什么?

    我们目前使用 dom4j 来创建 XML 文件 不过 我猜现在有更好的东西了 如果我们使用的是 Java 1 6 或更高版本 那么在编写 XML 文件时最好使用什么类 运行速度最快 使用简单 我不需要构建一个 DOM 然后编写整个 DOM
  • 如何在不反编译的情况下更改已编译的.class文件?

    我想更改 class 文件方法 我安装 JD Eclipse Decompiler 并打开 class 文件 我添加了一些代码并保存 class 文件 但是 class 文件没有改变 我不知道如何使用反编译器 如果可能的话 如何在不使用反编
  • Java 中 JButton 的击键/热键

    最初我使用 JMenu 并建立热键以使用加速器工作 它运行得很好 现在我想在 JButton 中实现相同的行为 但我陷入困境 这是我编写的代码 请分享您的想法 以便我可以走上正确的道路 import javax swing import j
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • 当底层连接是有状态时如何使用 Apache HttpClient?

    我在谷歌上搜索了很多关于如何使用 HttpClient 进行多线程处理的信息 他们中的大多数人建议使用 ThreadSafeClientConnManager 但我的应用程序必须登录某个主机 登录表单页面 以便 HttpClient 获得底
  • java中使用多线程调用同一类的不同方法

    我有一个类 如下所示 具有三种方法 public class MyRunnable implements Runnable Override public void run what code need to write here to c
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • 如何从 JavaFX 中的另一个控制器类访问 UI 元素?

    我有一个使用 NetBeans 8 编写的 JavaFX Java 8 应用程序 没有SceneBuilder 我的应用程序有一个主窗口 该窗口有自己的 FXML 文件 primary fxml 和自己的控制器类 FXMLPrimaryCo
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • Java/MongoDB 按日期查询

    我将一个值作为 java util Date 存储在我的集合中 但是当我查询以获取两个特定日期之间的值时 我最终得到的值超出了范围 这是我的代码 插入 BasicDBObject object new BasicDBObject objec
  • 决策树和规则引擎 (Drools)

    In the application that I m working on right now I need to periodically check eligibility of tens of thousands of object
  • java中void的作用是什么?

    返回类型 方法返回值的数据类型 如果方法不返回值 则返回 void http download oracle com javase tutorial java javaOO methods html http download oracle

随机推荐

  • 如何获取字典中的键列表?

    我只想要字典的键而不是值 我还无法获得任何代码来执行此操作 事实证明 使用另一个数组的工作量太大 因为我也使用了删除 如何获取字典中的键列表 Use the Dictionary
  • int 可以别名为 unsigned int 吗? [复制]

    这个问题在这里已经有答案了 编译器生成代码假设int可以通过一个别名unsigned int 下面的代码 int f int a unsigned int b a 10 b 12 return a int f int a double b
  • 为什么这种双重检查锁定是正确的? (。网)

    我读过很多关于双重检查锁定的危险的文章 我会尽力避免它 但话虽如此 我认为他们读起来非常有趣 我正在阅读 Joe Duffy 的这篇关于使用双重检查锁定实现单例的文章 http www bluebytesoftware com blog P
  • 在 iPhone 上复制并粘贴多种数据表示形式

    当我尝试将多个数据表示放到 iPhone 3 0 的粘贴板上时 遇到了一些问题 我想做的是将数据表示形式和字符串表示形式放到粘贴板上 数据是我自己的数据类型 我用它来复制和粘贴到我的应用程序中 字符串表示形式是一种将应用程序的内容作为大纲复
  • 如何配置具有两个端点的 WCF 服务,以便为每个端点使用不同的 ListenUri?

    我有一个 WCF 服务 它使用以下方式公开端点webHttpBinding并由 WPF 和 ASP NET 应用程序使用 一切都很好 我现在尝试从 Windows Phone WP7 使用该服务 然而 由于 NET Framework 还没
  • 如何在 firebase auth web 中存储用户名和 photourl

    我正在尝试 firebase 身份验证 我想在用户注册时存储照片网址和用户名 我的注册代码 const email signupForm email value const password signupForm password valu
  • 使用 AVMutableVideoComposition 时 AVMutableComposition 冻结的奇怪行为

    我正在尝试使用合并多个视频AVMutableComposition 我面临的问题是 每当我尝试添加任何AVMutableVideoComposition为了应用任何指令 我的播放冻结在AVPlayer持续时间正好 6 秒 另一个有趣的事情是
  • python-Binance api:APIError(代码=-1013):过滤失败:LOT_SIZE

    当尝试使用 python binance api 下买卖订单时 出现以下错误 APIError code 1013 Filter failure LOT SIZE 现在我看到了冰山零件 https github com binance ex
  • Xcode:如何在应用程序中一次更改所有字体?

    我想知道是否可以同时更改大约 100 个不同视图控制器上的字体 这比一件一件地检查并改变它们要容易得多 有任何想法吗 谢谢你 用户界面文件 xib 是纯文本 您可以将它们加载到编辑器中 在左侧窗格中的 Xcode4 中 您可以右键单击 gt
  • 以编程方式在 ActiveReports 中插入分页符

    我一直在网上寻找一个很好的例子 但无法弄清楚如何以编程方式向 ActiveReports 报表添加分页符 我正在处理的报告通常需要每条记录 1 2 页 为了支持报告的双面打印 我想为使用奇数页的每个记录插入一个空白页 确保每个新记录都打印在
  • TFS 2015(本地)vNext 构建失败,但 xaml 构建有效

    我已经为 TFS 2015 配置了新的构建服务器 我的 Xaml 构建运行得很好 但 vNext 构建始终停留在 等待可用代理 状态 代理池为绿色 仅配置了一个构建代理 我已多次删除和配置代理 但没有成功 更新1 我从代理日志中得到了这个
  • 预扫描网页进行动态测试

    寻找 JeffTanner 提出的问题的明确答案here https stackoverflow com questions 69095677 cypress adding tests dynamically within a wrap a
  • 如何在 R markdown 中生成没有前导码的 LaTeX 文件?

    我有一个 LaTeX 文档 它被分割成多个 tex files 我正在使用 R markdown 生成图形和表格 是否可以从 Rmd 生成没有前导码的 tex 文件 以便我能够在文档中使用输出 目前 我需要手动将部分输出复制到我的 tex
  • 更改单个折线图系列颜色 JavaFX

    我有一个窗口 其中包含三个不同的折线图 我试图单独设置每个折线图系列的颜色 现在我有一个 css 文件 内容如下 default color0 chart series line fx stroke blue default color1
  • 如何在ios中生成UUID

    如何在 Objective C 中获取 UUID 就像在 Java 中一样 UUID 用于生成代表 128 位值的唯一随机数 Try CFUUIDRef udid CFUUIDCreate NULL NSString udidString
  • 在 gradle.properties 文件中使用环境变量

    我正在尝试设置 org gradle java home 属性gradle properties文件来在 Java 8 上运行我的 Gradle 项目 而我的系统的其余部分使用 Java 7 因此 JAVA HOME指向 JDK 7 而不是
  • 如何使用 apply.daily/period.apply 计算 XTS 时间序列中每列的最大值?

    我在使用时遇到问题period apply函数适用于我的高分辨率时间序列分析案例 我想以 10 分钟为间隔计算数据的统计数据 不同时期的平均值 标准差等 计算每小时的平均值工作正常 如中所述这个答案 https stackoverflow
  • re.findall() 我想要页面上正则表达式的所有唯一实例

    正如标题所示 我想运行这样的代码 top url list 只是我循环查找的 url 列表 以查找我正在使用正则表达式查找的这些文件名约定的实例 name files for i in top url list result re find
  • Laravel 与多个列有很多关联

    我有两个型号 model 1 model 2 model 1有很多model 2 现在我想将 model 1 hasMany model 2 与多列匹配关联 让我在原始查询中举一个例子 select from model 1 left jo
  • Java jTable 定义单元格上的颜色行更改

    大家好 我没有发现下面的代码有什么不正确的地方 它可以很好地填充表格和标题 然而 当我改变第 1 行 第 1 列 to test然后单击它不会像我预期的那样为该行着色 然后单击我单击的那个会变成绿色 从那时起我单击桌子上的任何地方都会变成绿