JAVA - 点击后如何更改JTable行颜色?

时间:2015-08-19 14:43:58

标签: java colors jtable

我是Java初学者。 我使用JTable创建了一个应用程序,该应用程序填充了数据库。 在我的数据库中,我有一些'新闻'。在我的JTable中,我显示“新闻”的标题,当用户点击一行时,它会显示一个包含新闻正确内容的弹出窗口。 但是我希望将用户点击它时“读取”的单元格着色。

我使用自己的TableModel。

我希望我很清楚......

如果我需要提供一些代码,请告诉我请问...

2 个答案:

答案 0 :(得分:0)

找到了如何在mouseClick上获取表格单元格的示例:http://codeprogress.com/java/showSamples.php?index=52&key=JTableValueofSelectedCell

您可以使用它来获取所选的行和列。

然后,您需要创建一个自定义TableCellRenderer,可能作为内部类,以便它可以使用选定的行和列数据,并将单元格的背景设置为突出显示的颜色

答案 1 :(得分:0)

public class JTableTest extends JFrame {

    private JTable      table;
    private int         col;
    private int         rowz;


    /**
     * Create the frame.
     */
    public JTableTest() {
        initComponents();
    }

    private void initComponents() {
        /** any other components */

        table = new JTable();//create the table
        table.setDefaultRenderer(Object.class, new CustomModel());
        table.addMouseListener(new CustomListener());
    }

    public class CustomListener extends MouseAdapter {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            super.mouseClicked(arg0);
            //get the clicked cell's row and column
            rowz = table.getSelectedRow();
            col = table.getSelectedColumn();

            // Repaints JTable
            table.repaint();
        }
    }

    public class CustomModel extends DefaultTableCellRenderer {


        private static final long   serialVersionUID    = 1L;

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            Color c = Color.WHITE;//define the color you want
            if (isSelected && row == rowz & column == col)
                c = Color.GREEN;
            label.setBackground(c);
            return label;
        }
    }

}