Java: Как изменить цвет JTable drag & drop dropLine? - PullRequest
2 голосов
/ 20 сентября 2019

В настоящее время я пытаюсь включить перетаскивание в JTable с сильно настроенным пользовательским интерфейсом.При выполнении событий перетаскивания строк таблицы в том месте, где будет отброшена строка, появляется линия (эта линия рисуется Java).В настоящее время я пытаюсь выяснить, как я могу изменить цвет этой целевой линии / капли, но я не уверен, как это сделать.Может кто-нибудь указать мне правильное направление, где искать, или как я могу это сделать?

Ниже приведен скриншот JTable.По какой-то причине мой курсор не был захвачен на скриншоте, но ячейка, в которой я держал свой курсор, была нарисована в цвете, в котором я хочу, чтобы линия была. С самой левой ячейкой и самой правой ячейкой, цвет для некоторыхпричина голубая

enter image description here

1 Ответ

1 голос
/ 21 сентября 2019

Нашел ответ ... И, черт возьми, это напоминает мне, почему я думаю, что Java Swing - ужасно дрянная область Java.

Если вы хотите изменить его для каждого отдельного JTable в вашем приложении, вы можете использоватьUIManager, чтобы установить цвет для линии отбрасывания:

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

Если вы хотите установить его только для одной таблицы, вы должны установить пользовательский интерфейс для вашей таблицы:

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);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...