在JTable

时间:2018-05-25 13:47:58

标签: java swing jtable jtextarea renderer

我有一个JTable,它使用JTextArea作为一个Column的自定义渲染器。当我选择一行时,除了具有自定义单元格渲染器的列之外,该行中的所有元素都会突出显示。

如何才能突出显示该列?

我使用此代码填充并设置我的表

jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
         jTable1.setModel(DbUtils.resultSetToTableModel(rs1));
         jTable1.getColumnModel().getColumn(3).setCellRenderer(new wrap());
         updateRowHeights(3, 300);

                TableColumn c1 = jTable1.getColumnModel().getColumn(0);
                TableColumn c2 = jTable1.getColumnModel().getColumn(1);
                TableColumn c3 = jTable1.getColumnModel().getColumn(2);
                TableColumn c4 = jTable1.getColumnModel().getColumn(3);
                TableColumn c5 = jTable1.getColumnModel().getColumn(4);
                TableColumn c6 = jTable1.getColumnModel().getColumn(5);
                TableColumn c7 = jTable1.getColumnModel().getColumn(6);
                TableColumn c8 = jTable1.getColumnModel().getColumn(7);

                c1.setPreferredWidth(60);
                c2.setPreferredWidth(120);
                c3.setPreferredWidth(90);
                c4.setPreferredWidth(400);
                c5.setPreferredWidth(150);
                c6.setPreferredWidth(90);
                c7.setPreferredWidth(80);
                c8.setPreferredWidth(80);

这是Wrap类

class wrap extends JTextArea implements TableCellRenderer {
        wrap() {
            super();
            setLineWrap(true);
            setEditable(false);
            setWrapStyleWord(true);
            setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
        }

        @Override
        public Component getTableCellRendererComponent(JTable jtable, Object value, boolean bln, boolean bln1, int i, int i1) {
            setText((String) value);
            setFont(jTable1.getFont());
            setBackground(jTable1.getBackground());
            setForeground(jTable1.getForeground());            
            return this;
        }

    }

我知道这可能会提出很多问题,但是对于代码示例的任何可能的解释都会受到高度赞赏,因为我还是一个菜鸟。

这是现在正在发生的事情的图像样本。对不起,我不得不涂抹一些数据。enter image description here

0 个答案:

没有答案