2010-08-23 67 views
4

如何設置JTable列和行顏色?如何設置JTable列和行顏色?

+0

編輯;如果不正確請回復。 – trashgod 2010-08-23 15:59:09

+0

另請參閱http://download.oracle.com/javase/tutorial/uiswing/components/table.html – trashgod 2010-08-23 15:59:56

+1

@lalchand:您已經得到了有用的答案,可以使用一些注意事項以及以前的問題。 – trashgod 2010-08-23 16:05:58

回答

3

以下是短片example

import java.awt.Color; 
import java.awt.Component; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableCellRenderer; 
import javax.swing.table.TableCellRenderer; 

public class JTableExample extends JFrame { 

String data[][] = {{"John", "Sutherland", "Student"}, 
    {"George", "Davies", "Student"}, 
    {"Melissa", "Anderson", "Associate"}, 
    {"Stergios", "Maglaras", "Developer"}, 
}; 

String fields[] = {"Name", "Surname", "Status"}; 

public static void main(String[] argv) { 
    JTableExample myExample = new JTableExample("JTable Example"); 
} 

/** 
    * @param title 
    */ 
public JTableExample(String title) { 
    super(title); 
    setSize(150, 150); 
    addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent we) { 
    dispose(); 
    System.exit(0); 
    } 
    }); 
    init(); 
    pack(); 
    setVisible(true); 
} 

private void init() { 

    final CustomCellRenderer renderer = new CustomCellRenderer();   
    JTable jt = new JTable(data, fields) { 

    @Override 
    public TableCellRenderer getCellRenderer(int row, int column) { 
    // TODO Auto-generated method stub 
    return renderer; 
    } 

    }; 
    JScrollPane pane = new JScrollPane(jt); 
    getContentPane().add(pane); 
} 


/** 
    * @author suhas 
    * 
    */ 
private class CustomCellRenderer extends DefaultTableCellRenderer { 

    /* (non-Javadoc) 
    * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) 
    */ 
    public Component getTableCellRendererComponent(JTable table, Object value, 
    boolean isSelected, boolean hasFocus, int row, int column) { 

    Component rendererComp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, 
    row, column); 

    //Set foreground color 
    rendererComp.setForeground(Color.red); 

    //Set background color 
    rendererComp .setBackground(Color.blue); 

    return rendererComp ; 
    } 

} 

} 
+3

請引用示例代碼的來源。 – trashgod 2010-08-23 18:28:13

1

回答一個心不在焉的提問者的模糊問題需要一些善意(和空閒時間)。

對於列,您可以設置一個單元格渲染器,將一個列上的DefaultTableCellRenderer(它擴展了JLabel),然後設置渲染器的前景和背景。

對於行,您必須在單元格渲染器的getTableCellRendererComponent中執行此操作。

如果您需要任何細節(例如備用行背景),您應該使用靈活的自定義渲染器。有無數的免費和商業表格組件提供着色和JTable應該具有的所有內容,例如JIDE Grids(不是免費但超級強大)。