Автоматический выбор каждой второй строки в JTable - PullRequest
3 голосов
/ 05 ноября 2011

Я пытаюсь создать таблицу, в которой выделены все остальные строки (в основном для внешнего вида).

Мне также интересно, есть ли способ изменить цвет выделения на черный вместопо умолчанию, который кажется синим.

Вот что я сейчас использую:

public class Statistics {

    private JFrame frame;
    private JPanel contentPane;

    public static void main(String[] arguments) {
        new Statistics().construct();
    }

    public void construct() {
        frame = new JFrame("Statistics");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setResizable(false);
        frame.add(getComponents());
        frame.pack();
        frame.setVisible(true);
    }

    public JPanel getComponents() {
        contentPane = new JPanel(new FlowLayout());     
        String[] columnNames = { "Statistic name", "Statistic value" };
        Object[][] data = { { "Score", "0"}, {"Correct percentage", "100%" } };
        JTable table = new JTable(data, columnNames);       
        JScrollPane scrollPane = new JScrollPane(table);
        contentPane.add(scrollPane);        
        return contentPane;
    }
}

1 Ответ

2 голосов
/ 05 ноября 2011

Я думаю, что самым простым и удобным способом для JTable было бы поискать prepareRenderer, а затем переопределить

if (isSelected) {
   setBackground(myTable.getBackground); // Color.white
} else {
   setBackground(whatever.Color);
}

извините, я не могу устоять, ваш код будет

import java.awt.*;
import javax.swing.*;

public class Statistics {

    private JFrame frame;
    private JPanel contentPane;
    private String[] columnNames = {"Statistic name", "Statistic value"};
    private Object[][] data = {{"Score", "0"}, {"Correct percentage", "100%"}};
    private JTable table = new JTable(data, columnNames);
    private JScrollPane scrollPane = new JScrollPane(table);

    public Statistics() {
        frame = new JFrame("Statistics");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.add(getComponents());
        frame.setLocation(150, 150);
        frame.pack();
        frame.setVisible(true);
    }

    private JPanel getComponents() {
        contentPane = new JPanel(new BorderLayout(10, 10));        
        table.getColumnModel().getColumn(0).setPreferredWidth(150);
        table.getColumnModel().getColumn(1).setPreferredWidth(100);
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        contentPane.add(scrollPane, BorderLayout.CENTER);
        return contentPane;
    }

    public static void main(String[] arguments) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                Statistics statistics = new Statistics();
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...