Avatar billede christinx Nybegynder
29. december 2005 - 22:22 Der er 1 kommentar

Hvordan ændre jeg farven på et tal i min JTable?

Jeg har søgt alle vejene, i tutorials osv. men kan ikke finde ud af hvordan jeg for et tal i et bestemt felt i min JTable til at blive rødt? - ved du mon det? God Jul:)
Avatar billede _carsten Nybegynder
29. december 2005 - 23:51 #1
Der er mange muligheder, her er eksempler på 2 af dem

I den første celle kan du skrive en tekst og rette farven til rød
I kolonne 2 bliver positive tal skrevet med sort og negative tal med rød farve

Prøv selv.

import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;


public class TableFontColor extends javax.swing.JFrame {

    public TableFontColor() {
        initComponents();
       
        TableColumn col = table.getColumnModel().getColumn(1);
        col.setCellRenderer(new MyCellRenderer());
    }

    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        scroll = new javax.swing.JScrollPane();
        table = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("Skift fontfarve i celle 1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                skiftFarve(evt);
            }
        });

        jPanel1.add(jButton1);

        getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);

        scroll.setPreferredSize(new java.awt.Dimension(452, 200));
        table.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Integer.class, java.lang.Object.class, java.lang.Object.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        scroll.setViewportView(table);

        getContentPane().add(scroll, java.awt.BorderLayout.CENTER);

        pack();
    }


    private void skiftFarve(java.awt.event.ActionEvent evt) {
        DefaultTableCellRenderer dtc = (DefaultTableCellRenderer)table.getCellRenderer(0,0);
        dtc.setForeground(Color.red);
        table.repaint();
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TableFontColor().setVisible(true);
            }
        });
    }
   
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane scroll;
    private javax.swing.JTable table;
}


class MyCellRenderer extends JLabel implements TableCellRenderer{
    public MyCellRenderer(){
        setOpaque(true);
    }
   
    public Component getTableCellRendererComponent(JTable table,
            Object value,
            boolean isSelected,
            boolean hasFocus,
            int row,
            int column) {
       
        setHorizontalAlignment(JLabel.RIGHT);
        if(value == null)
            setText("");
        else
            setText(value.toString());
       
        if(value instanceof Integer){
            int i = ((Integer)value).intValue();
           
            if(i < 0)
                setForeground(Color.red);
            else
                setForeground(Color.black);
        }
       
        if(isSelected)
            setBackground(table.getSelectionBackground());
        else
            setBackground(table.getBackground());

        return this;
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester