簡體   English   中英

將彩色行添加到JTable

[英]Adding coloured row to JTable

我有一個要填寫的表格和3個chekbox(黃色-橙色-紅色),當我填寫表格並選擇一種顏色時,我單擊一個按鈕,它將向Jtable添加一行白色的選定顏色。 我使用了TableCellRenderer,它可以工作,但是當我進行三到四次操作時,所有行都被選中了復選框。 如何使每一行都變成他的顏色? 這是我的代碼:

JTable  table = new JTable(
            new DefaultTableModel(new Object[][] {}, columnNames));

    TableColumn column1 = table.getColumnModel().getColumn(
            0);
    column1.setCellRenderer(getRenderer());
    TableColumn column3 = table.getColumnModel().getColumn(
            1);
    column3.setCellRenderer(getRenderer());
    TableColumn column2 = table.getColumnModel().getColumn(
            2);
    column2.setCellRenderer(getRenderer());
 String desc = display.getSelectedItem().toString();
 DefaultTableModel tm = (DefaultTableModel) table.getModel();

                    String numcam = num_cam;
                    String timeStamp = new SimpleDateFormat(
                            "yyyy-MM-dd--HH:mm:ss").format(Calendar
                            .getInstance().getTime());

                    tm.addRow(new Object[] { new String(timeStamp), new String(numcam),
                            new String(desc) });

                    table.setModel(tm);

                    // reinitialiser les boutons apres le click
                    buttonGroup.clearSelection();
                    buttonGroup2.clearSelection();

還有我的單元格渲染器代碼

  private static TableCellRenderer getRenderer() {
    return new DefaultTableCellRenderer() {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        @Override
        public Component getTableCellRendererComponent(JTable table,
                Object value, boolean isSelected, boolean hasFocus,
                int row, int column) {
            Component tableCellRendererComponent = super
                    .getTableCellRendererComponent(table, value,
                            isSelected, hasFocus, row, column);
            tableCellRendererComponent.setBackground(Color.black);
            setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
            // verification de l couleur du bouton clické
            if (yellow.isSelected()) {
                tableCellRendererComponent.setForeground(new Color(255,
                        255, 51));
            } else if (orange.isSelected()) {
                tableCellRendererComponent.setForeground(new Color(255,
                        153, 0));
            } else if (red.isSelected()) {
                tableCellRendererComponent.setForeground(Color.RED);
            }

            return tableCellRendererComponent;
        }
    };
}

如何使每一行都變成他的顏色?

我不清楚這個問題:

  1. 您是否要使每一行都具有相同的顏色? 如果是,那么每次選擇新顏色時都需要調用table.repaint()。 所有行將使用新顏色重新渲染

  2. 或者,您是否要根據添加行時選擇的顏色,使每一行都具有不同的顏色? 如果是,那么您需要向TableModel添加另一列以存儲該行的選定顏色。 然后,在渲染器中,您需要從TableModel中獲取Color。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM