java 如何设置 JTable 列和行颜色?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3548986/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I set the JTable column and row color?
提问by Lalchand
How do I set the JTablecolumn and row color?
如何设置JTable列和行颜色?
采纳答案by Suhas Phartale
Here is a short 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 ;
}
}
}
回答by Geoffrey Zheng
Answering a vague question from an absent-minded asker takes some good will (and idle time).
回答一个心不在焉的提问者一个模糊的问题需要一些善意(和空闲时间)。
For column, you can set a cell renderer that extends DefaultTableCellRenderer(which extends JLabel) on a column, then set renderer's foreground and background.
对于列,您可以设置在列上扩展DefaultTableCellRenderer(扩展 JLabel)的单元格渲染器,然后设置渲染器的前景和背景。
For row you have to do it in cell renderer's getTableCellRendererComponent.
对于行,您必须在单元格渲染器的getTableCellRendererComponent.
If you need anything beyond trivial (e.g. alternate row background) you should use a flexible custom renderer. There are countless free and commercial table components that provide coloring and everything JTable should have, for example JIDE Grids(not free but super powerful).
如果您需要任何不重要的东西(例如交替行背景),您应该使用灵活的自定义渲染器。有无数免费和商业的表格组件提供着色和 JTable 应有的一切,例如JIDE Grids(不是免费的,但功能非常强大)。
回答by Shinwar ismail
DefaultTableCellRenderer rendar1 = new DefaultTableCellRenderer();
rendar1.setForeground(Color.red);
jTable1.getColumnModel().getColumn(0).setCellRenderer(rendar1);
colum change color this code to constructor
列将此代码更改为构造函数的颜色

