如何设置JTable列和行颜色?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置JTable列和行颜色?相关的知识,希望对你有一定的参考价值。

如何设置JTable列和行颜色?

答案

这是一个短的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 ;
  }

 }

}
另一答案

从一个心不在焉的提问者那里回答一个模糊的问题需要一些善意(和空闲的时间)。

对于列,您可以设置一个单元格渲染器,用于在列上扩展DefaultTableCellRenderer(扩展JLabel),然后设置渲染器的前景和背景。

对于行,您必须在单元格渲染器qazxsw poi中执行此操作。

如果您需要超出平凡的任何内容(例如备用行背景),则应使用灵活的自定义渲染器。有无数的免费和商业桌面组件提供着色和JTable应具备的一切,例如getTableCellRendererComponent(不是免费但超级强大)。

另一答案
JIDE Grids

列将此代码更改为构造函数

以上是关于如何设置JTable列和行颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Handsontable中的反向列和行标题

如何将列和行设置为 tkinter 框架中的窗口大小?

Drupal Views:如何设置列和行的标题?

如何将我的 JTable 中第一行的颜色设置为黄色(或任何颜色)?

修改矩阵并将列和行设置为零的算法

如何在 Flutter 中将列和行项居中?