如何设置 JTable 列和行颜色?

发布于 2024-09-16 02:37:52 字数 38 浏览 0 评论 0原文

如何设置 JTable 列和行颜色?

How do I set the JTable column and row color?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情栀口红 2024-09-23 02:37:55

回答心不在焉的提问者提出的模糊问题需要一些善意(和闲暇时间)。

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

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

如果您需要任何超出微不足道的东西(例如交替行背景),您应该使用灵活的自定义渲染器。有无数的免费和商业表格组件提供着色和 JTable 应该具备的一切,例如 JIDE Grids< /a> (不是免费的,但超级强大)。

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.

For row you have to do it in cell renderer's 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).

可是我不能没有你 2024-09-23 02:37:55
DefaultTableCellRenderer rendar1 = new DefaultTableCellRenderer();
    rendar1.setForeground(Color.red);

    jTable1.getColumnModel().getColumn(0).setCellRenderer(rendar1);

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

DefaultTableCellRenderer rendar1 = new DefaultTableCellRenderer();
    rendar1.setForeground(Color.red);

    jTable1.getColumnModel().getColumn(0).setCellRenderer(rendar1);

colum change color this code to constructor

抽个烟儿 2024-09-23 02:37:54

这是一个简短的示例

输出

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[] args) {
      new JTableExample();
   }

   public JTableExample() {
      super();
      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) {
            return renderer;
         }

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


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

      /**
       * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(JTable, 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);

         // Very important to handle selected items (render them inversely colored)
         if (isSelected) {
            rendererComp.setBackground(getHuedColor(row).darker().darker());
            rendererComp.setForeground(getHuedColor(row).brighter().brighter());
         }
         else {
            rendererComp.setBackground(getHuedColor(row).brighter().brighter());
            rendererComp.setForeground(getHuedColor(row).darker().darker());
         }

         return rendererComp;
      }

      public Color getHuedColor(int hue) {
         return new Color(
               Color.HSBtoRGB(85 / 360f * hue, 0.7f, 1.0f
               ));
      }
   }
}

Here is a short example.

Output

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[] args) {
      new JTableExample();
   }

   public JTableExample() {
      super();
      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) {
            return renderer;
         }

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


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

      /**
       * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(JTable, 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);

         // Very important to handle selected items (render them inversely colored)
         if (isSelected) {
            rendererComp.setBackground(getHuedColor(row).darker().darker());
            rendererComp.setForeground(getHuedColor(row).brighter().brighter());
         }
         else {
            rendererComp.setBackground(getHuedColor(row).brighter().brighter());
            rendererComp.setForeground(getHuedColor(row).darker().darker());
         }

         return rendererComp;
      }

      public Color getHuedColor(int hue) {
         return new Color(
               Color.HSBtoRGB(85 / 360f * hue, 0.7f, 1.0f
               ));
      }
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文