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

在焦点丢失时突出显示swt表格行

董高畅
2023-03-14

我面临着这里提到的同样的问题SWT:表丢失了选择。我使用的是ubuntu 12.04,而不是windows。是否有任何方法可以突出显示SWT表的选定行,即使在焦点丢失之后。我尝试将focus listener添加到表中,在focus lost中,我更改了所选项目的背景色,而on focus gain重置了背景色。请参阅代码。

        @Override
        public void focusLost(FocusEvent e) {
            System.out.println("table focus los");
            TableItem item = fileListTable
                    .getItem(fileListTable.getSelectionIndex());
            prevSelItemBackground = item.getBackground();
            item.setBackground(soureWindow.getSelectionBackground());//Some random colour
            System.out.println(fileListTable.getSelectionIndex());
        }

        @Override
        public void focusGained(FocusEvent e) {
            System.out.println("table focus gain");
            TableItem item = fileListTable
                    .getItem(fileListTable.getSelectionIndex());
            item.setBackground(prevSelItemBackground);
            System.out.println(fileListTable.getSelectionIndex());
        }

但它不起作用。是否有其他解决方案/解决方法?

共有1个答案

江敏学
2023-03-14

可以使用以下片段:

    this.fileListTable.addSelectionListener(new SelectionListener() {

    @Override
    public void widgetDefaultSelected(SelectionEvent e) {
        // Nothing to do
    }

    @Override
    public void widgetSelected(SelectionEvent e) {

        int selectionIndex = fileListTable.getSelectionIndex();                                                             
        TableItem[] items = fileListTable.getItems();
        TableItem newItem;
        for (int i = 0; i < items.length; i++) {
        String first = items[i].getText(0);
        String second = items[i].getText(1);
        String third = items[i].getText(2);
        items[i].dispose();
        newItem = new TableItem(fileListTable, SWT.NONE);
        newItem.setText(new String[] { first, second, third });
        if (i == selectionIndex) {
            newItem.setForeground(soureWindow.getSelectionForeground());//Or Anyother color
            newItem.setBackground(soureWindow.getSelectionBackground());//Or Anyother color
        } else {
            newItem.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));//Default foreground color
            newItem.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));//Default background color
        }
        }                
    }
    });

它对我来说运行良好,但没有在更大的数据上进行测试。

 类似资料:
  • 我正在制作一个界面来编辑游戏场景。基本上,它由具有嵌套条件和操作的事件组成。所以,我计划使用两个树视图-一个用于选择事件,另一个用于选择事件内的条件/操作进行编辑。 现在,你看,如果我选择一个事件(在左树状视图中),然后尝试在右树状视图中选择某个内容,左树状视图将停止显示蓝色选择矩形。这显然很糟糕,因为现在用户不知道他正在编辑哪个事件! 我发现保留关于当前选择内容的某种信息的唯一方法是使用Ssel

  • 问题内容: 有没有一种方法可以设置Windows 7的Aero主题中SWT表(FULL_SELECTION样式)的突出显示行的背景颜色?看来这是从表格的背景色派生而来的浅色。但是除此之外,我似乎对使用哪种颜色没有太多控制。 这对我们来说是个问题,因为我们某些表项的文本(前景)为灰白色,因此如果在浅色背景上选择该行,则很难阅读。我已经将表格的背景色设置为“黑色”,但是文本仍然很难看清。 关于如何控制

  • 好的,所以我尝试在gridpane中垂直列中的任何节点上鼠标时高亮显示该列中的所有节点。现在,我正在获取节点的columnIndex,我的鼠标已结束,然后创建一个共享该列索引的所有节点的数组。将该数组返回到main方法,然后将数组中节点的背景色更改为一种颜色。 这是鼠标覆盖功能: 这是我的Node[]生成器:

  • 我正在创建一个包含图像和文本的网格视图布局。我想要多选的项目,这是工作正常,但我想突出显示的网格项目,这是选定的。 这是我的代码: 我应该添加什么到突出显示将被选中的网格项目的代码中。 请给我一些建议。提前谢谢。

  • 问题内容: 我已经看到chrome在边框上放置了一个较粗的边框,但是在我也使用border-radius的情况下,它看起来有点像。反正有删除它吗? 问题答案: 您应该可以使用删除它 但请记住,这可能对可用性不利:很难确定元素是否被聚焦,当您使用键浏览表单的所有元素时会很烂-您应该以某种方式反映元素的聚焦。

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