JTable细胞颜色

有人能举例说明如何在JTable中获取特定单元格的背景颜色吗? 我无法找到如何执行此操作的示例。 获取单元格中的值的大量示例,而不是单元格的背景颜色。

它应该类似于以下内容(根据所有评论修复):

重要提示:使用table.prepareRenderer(…)让JTable为您完成所有工作

public Color getTableCellBackground(JTable table, int row, int col) { TableCellRenderer renderer = table.getCellRenderer(row, col); Component component = table.prepareRenderer(renderer, row, col); return component.getBackground(); } 

完整演示:

 public class TableRenderDemo extends JPanel { public TableRenderDemo() { super(new GridLayout(1, 0)); final JTable table = new JTable(new MyTableModel()); table.setPreferredScrollableViewportSize(new Dimension(600, 200)); table.setFillsViewportHeight(true); table.setDefaultRenderer(Object.class, new MyRenderer()); table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int row = table.getSelectedRow(); int col = table.getSelectedColumn(); JOptionPane.showInternalMessageDialog(TableRenderDemo.this, "Color: " + getTableCellBackground(table, row, col)); System.out.println("Color: " + getTableCellBackground(table, row, col)); } }); JScrollPane scrollPane = new JScrollPane(table); add(scrollPane); } public Color getTableCellBackground(JTable table, int row, int col) { TableCellRenderer renderer = table.getCellRenderer(row, col); Component component = table.prepareRenderer(renderer, row, col); return component.getBackground(); } class MyRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JTextField editor = new JTextField(); if (value != null) { editor.setText(value.toString()); } editor.setBackground((row % 2 == 0) ? Color.white : Color.BLUE); return editor; } } class MyTableModel extends AbstractTableModel { private String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"}; private Object[][] data = { {"Kathy", "Smith", "Snowboarding", new Integer(5), new Boolean(false)}, {"John", "Doe", "Rowing", new Integer(3), new Boolean(true)}, {"Sue", "Black", "Knitting", new Integer(2), new Boolean(false)}, {"Jane", "White", "Speed reading", new Integer(20), new Boolean(true)}, {"Joe", "Brown", "Pool", new Integer(10), new Boolean(false)} }; public final Object[] longValues = {"Jane", "Kathy", "None of the above", new Integer(20), Boolean.TRUE}; public int getColumnCount() { return columnNames.length; } public int getRowCount() { return data.length; } public String getColumnName(int col) { return columnNames[col]; } public Object getValueAt(int row, int col) { return data[row][col]; } } private static void createAndShowGUI() { JFrame frame = new JFrame("TableRenderDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); TableRenderDemo newContentPane = new TableRenderDemo(); newContentPane.setOpaque(true); //content panes must be opaque frame.setContentPane(newContentPane); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } } 

有人能举例说明如何在JTable中获取特定单元格的背景颜色吗? 我无法找到如何执行此操作的示例。

  • TableCellRenderer或Renderer ,

  • 但一切都基于JTable教程 ,尤其是编辑和渲染器以及自定义渲染器的一部分

  • 这里和这里有很多例子

获取单元格中的值的大量示例,而不是单元格的背景颜色。

  • 我无法抗拒,请在这个论坛或哪里

  • 我希望能帮助你….

要获取单元格0, 0处的JTable颜色0, 0您可以获得单元组件的背景颜色:

 TableCellRenderer cellRenderer = table.getCellRenderer(0, 0); Component rendererComponent = cellRenderer.getTableCellRendererComponent(table, null, false, true, 0, 0); Color cellColor = rendererComponent.getBackground(); 

使用TableCellRenderer

 jTable1 = new javax.swing.JTable(6,6){ public Component prepareRenderer( TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); if(column==2 && row==4) { Color color= c.getBackground();// use setBackground to set color and get background to get background of a particular cell System.out.println("Color of row=0 and column=0 is "+color); } else { c.setBackground(Color.GREEN); setShowGrid(true); } return c; } };