当前位置: 首页 > 面试题库 >

JTable中“突出显示”特定行

宋俊艾
2023-03-14
问题内容

每当单元格的内容与用户的输入匹配时,我都希望突出显示JTable中的特定行。以下代码是我到目前为止可以使用的代码:

JTable table = new JTable(model) {
    public Component prepareRenderer(
            TableCellRenderer renderer, int row,
            int column) {
        Component c = super.prepareRenderer(renderer,
                row, column);
        if (!isRowSelected(row) ) {
            c.setBackground((hashMapcontainer
                    .containsKey(row)) ? Color.GREEN
                    : getBackground());
        }
        return c;
    }
    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
};

注意:hashMapcontainerhashmap在源文件中全局作用域。

现在,此操作在某种程度上可行,但是我将其添加JTableJTabbedPane内的JFrame。JTables是在程序运行时动态创建的。但是,该prepareRenderer方法会使所有已创建的JTables中的所有特定单元格突出显示。

如何在所有JTable中保留单元格以保留其特定的突出显示单元,而不是让所有JTable在每个JTable中具有完全相同的突出显示单元呢?

提前致谢!


问题答案:

渲染器是“橡皮图章”。基本上,这意味着它们会将先前的设置带到下一个单元格。

您需要做的是提供“默认”行为

if (!isRowSelected(row) ) {
    c.setBackground((hashMapcontainer
        .containsKey(row)) ? Color.GREEN
        : getBackground());
} else {

    // Define the default background color
    // Don't forget to take into the selection state

}

虽然我个人认为prepareRenderer在这种情况下可能是一个公平的解决方案,但您确实应该探索提供基线渲染器的可能性。这是一项很艰巨的工作,但具有可移植性(如果您更改表实现)的优点,并且允许其他人定义给定单元格的突出显示规则的机会,而您基本上已经将其覆盖并覆盖,
恕我直言。

我还建议您看一下JXTable,因为它具有内置突出显示功能



 类似资料:
  • 问题内容: 我有此代码从如何突出显示jtable中的多个单元格: 但是,当我用它突出显示一个单元格时,它会执行错误的操作,就像丢失整个数据一样。Iam是Java Swing的新手。请帮助使单元格在按钮按下动作事件中突出显示。 更新:添加我的示例代码: 我想要的是单击按钮,我只想突出显示单元格编号1(Row1-Column1)。 问题答案: 我使用此类来设置JTables的样式 创建此类的实例,并将

  • 问题内容: 我想建立一个样本,以从与我的应用程序过滤器匹配的单词中删除突出显示的内容。因此,我将自己基于以下示例: 此示例的作用是删除文本区域的所有突出显示。例如,如果我选择了三个单词,并且取消选中其中一个,则所有过滤器都将被删除,而我只想删除未选中单词的突出显示。是否有一种简单的方法来检查哪个单词与过滤器匹配?还是我需要手动进行?直到现在,我发现我的研究没有成功 提前致谢 最后编辑: 基于@ca

  • 在我的java摇摆应用程序中,我想突出显示jtable中的某些行。用java怎么可能做到这一点。提前感谢。

  • 您好,我是Swift新手,在我的项目中使用SwiftUI,我下载了一些天气数据,并将其显示在ContentView()中。 我想突出显示文本的某一部分,如果它包含一些特定的单词,但我不知道如何开始。 在ContentView()中,我尝试设置一个函数,该函数接收从web下载的字符串并返回一个字符串。我认为这是错误的,因为SwiftUI根本不为文本应用修饰符。 例如,在我的ContentView()

  • 本文向大家介绍HTML 突出显示,包括了HTML 突出显示的使用技巧和注意事项,需要的朋友参考一下 示例 该<mark>元素是HTML5中的新元素,用于“由于其在另一个上下文中的相关性”而标记或突出显示文档中的文本。1 最常见的示例是用户输入搜索查询并显示结果以突出显示所需查询的搜索结果。 输出: 常见的标准格式是黄色背景上的黑色文本,但是可以使用CSS进行更改。

  • 基于我在画布上使用的代码和截图,我试着填充一个红色的矩形,但是没有效果。如何才能确保只填充最上面一行左起第二个矩形?