【问题标题】:Java: How to change JTable drag & drop dropLine color?Java:如何更改 JTable 拖放 dropLine 颜色?
【发布时间】:2019-09-20 17:23:29
【问题描述】:

我目前正在尝试在具有高度自定义 UI 的 JTable 中启用拖放功能。在对表格行进行拖放事件时,会在要删除行的地方出现一条线(这条线是Java绘制的)。我目前正在尝试弄清楚如何更改此目标线/下降线的颜色,但我不确定如何去做。谁能指出我在哪里看的正确方向,或者我该怎么做?

下面是 JTable 的截图。出于某种原因,我的光标没有在屏幕截图中捕获,但是我持有光标的单元格以我希望线条所在的颜色绘制。对于最左边的单元格和最右边的单元格,一些颜色原因是蓝色的。

【问题讨论】:

    标签: java swing user-interface jtable


    【解决方案1】:

    找到了答案……天哪,这让我想起了为什么我认为 Java Swing 是 Java 的一个非常糟糕的领域。

    如果您想为应用程序中的每个 JTable 更改它,您可以使用 UIManager 设置下拉线的颜色:

    UIManager.put("Table.dropLineColor", Color.cyan);
    UIManager.put("Table.dropLineShortColor", Color.cyan);
    

    如果您只想为一个表设置它,那么您必须为您的表设置自定义 UI:

    myTable.setUI(new CustomTableUI());
    

    CustomTableUI 然后确保在 UIManager 中,dropLine 的默认颜色在绘制线条之前更改。之后,恢复默认值:

    private class CustomTableUI extends BasicTableUI {
    
        @Override
        public void paint(Graphics g, JComponent c) {
            // Store defaults
            Color dropLineColor = UIManager.getColor("Table.dropLineColor");
            Color dropLineShortColor = UIManager.getColor("Table.dropLineShortColor");
    
            // Set your custom colors here
            UIManager.put("Table.dropLineColor", Color.cyan);
            UIManager.put("Table.dropLineShortColor", Color.cyan);
    
            // Allow the table to be painted
            super.paint(g, c);
    
            // Restore the defaults
            UIManager.put("Table.dropLineColor", dropLineColor);
            UIManager.put("Table.dropLineShortColor", dropLineShortColor);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-06
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 2013-08-29
      • 1970-01-01
      相关资源
      最近更新 更多