Изменить внешний вид JTable - PullRequest
       25

Изменить внешний вид JTable

3 голосов
/ 12 августа 2011

У меня есть JTable, и мне нужно изменить некоторые его свойства, например цвет подсветки.

Этот веб-сайт указывает на наличие полей в таблице, таких как «выделение» и «освещение».

enter image description here

Я их нигде не могу найти. Когда вы создаете экземпляр JTable, ничто, включающее «Highlight» или «light», не отображается в intellisense. (Однако некоторые методы, такие как table.setFont (), отображаются).

Я, однако, заметил table.setUI();, но я не знаю, как его использовать или как-то связано с этим.

Что я ищу, так это чтобы строка меняла цвет при наведении на нее курсора, я не уверен, что Highlight сделает это, или мне придется пройти долгий путь, реализовав MouseListener. Я все еще хочу иметь возможность изменять другие настройки L & F.

Ответы [ 3 ]

1 голос
/ 12 августа 2011

существует четыре способа

1) переопределить пользовательский интерфейс

2) использовать средства визуализации

3) для лучшего и приятного вывода в графический интерфейс, который я рекомендую изменить Look and Feel или использовать Nimbus Lookи * Feel или Synth Look and Feel

4) соедините все параметры am вместе с пользовательской раскраской для JViewPort , ScrollBar

1 голос
/ 12 августа 2011

Я не уверен, что приведенные ниже коды будут работать, потому что я взял и изменил его из некоторых фрагментов одного из кодов моего старого проекта, но вы можете попробовать.

public class MyTable extends JTable implements MouseMotionListener {
    int mouseHoverRow = -1;

    public MyTable() {
           addMouseMotionListener(this);
    }

    //codes

    public Component prepareRenderer(TableCellRenderer renderer, int rowIndex,
            int vColIndex) {
        Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
        Color back = getSelectionBackground();
        int red = back.getRed();
        int green = back.getGreen();
        int blue = back.getBlue();
        if (rowIndex == mouseHoverRow) {
            c.setBackground(Color.LIGHT_GRAY);
        } else {
            c.setBackground(getBackground());
        }
        return c;
    }

    public void mouseMoved(MouseEvent e) {
        Point p = new Point(e.getX(), e.getY());
        mouseHoverRow = rowAtPoint(p);
    }
1 голос
/ 12 августа 2011

Вы, вероятно, можете достичь своей цели, установив одно или несколько свойств, которые вы цитируете в UIManager (или UIDefaults ), используя метод #put(String, String) перед рендерингом JTable.

Эта ссылка также может вам немного помочь: http://www.java2s.com/Code/Java/Swing-JFC/ListUIPropertiesinaJTableandsortable.htm

Надеюсь, это поможет!

...