JTable渲染与复选框

时间:2013-05-29 23:08:01

标签: java swing jtable render tablecellrenderer

有没有人知道如何在此代码中添加复选框:

String data[][]={
       {"Apple","Banana","Mango"}, {"Apple","Banana","Mango"}, {"Apple","Banana","Mango"}
   };
   String column[]={"Fruits","Fruits","Fruits"};
   table=new JTable(new DefaultTableModel(data, column)){
            private Border outside = new MatteBorder(1, 0, 1, 0, Color.RED);
            private Border inside = new EmptyBorder(0, 1, 0, 1);
            private Border highlight = new CompoundBorder(outside, inside);

            public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
            {
                Component c = super.prepareRenderer(renderer, row, column);
                JComponent jc = (JComponent)c;

                // Add a border to the selected row

                if (isRowSelected(row))
                    jc.setBorder( highlight );

                                return c;
            }
        };


jScrollPane1.setViewportView(table);

我只是想添加复选框,这样如果我勾选一个复选框,它会突出显示,所有选中的复选框都会突出显示。提前谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

这是伪代码,我在我的存储库中找到了某个地方。根据您的用途使用它。

import java.awt.Color;
import java.awt.Component;

import javax.swing.*;
import javax.swing.table.*;

public class TableCheckBoxHighLight extends JFrame {

    private static final long serialVersionUID = 1L;
    private JTable table;

    public TableCheckBoxHighLight() {
        Object[] columnNames = { "Col1", "Col2", "Select" };
        Object[][] data = { 
                            { "Item1", "123", false },
                            { "Item2", "345", false }, 
                            { "Item3", "678", false },
                            { "Item4", "901", false }
                          };
        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        table = new JTable(model) {

            private static final long serialVersionUID = 1L;

            @SuppressWarnings("unchecked")
            @Override
            public Class getColumnClass(int column) {
                switch (column) {
                case 0:
                    return String.class;
                case 1:
                    return String.class;

                default:
                    return Boolean.class;
                }
            }

            @Override
            public Component prepareRenderer(TableCellRenderer renderer,
                    int row, int col) {
                Component c = super.prepareRenderer(renderer, row, col);

                int[] selCols = table.getSelectedColumns();
                table.setSelectionBackground(Color.GREEN);
                for (int i : selCols)
                    c.setBackground(Color.RED);

                return c;
            }
        };

        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane(table);
        getContentPane().add(scrollPane);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                TableCheckBoxHighLight frame = new TableCheckBoxHighLight();
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                frame.pack();
                frame.setLocation(150, 150);
                frame.setVisible(true);
            }
        });
    }
}