程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了着色jTable行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决着色jTable行?

开发过程中遇到着色jTable行的问题如何解决?下面主要结合日常开发的经验,给出你关于着色jTable行的解决方法建议,希望对你解决着色jTable行有所启发或帮助;

这是有关如何组合列颜色和行颜色的示例。您基本上是在tableCellRenderer中执行测试,以查看背景是否应为一种颜色或另一种颜色。

import java.awt.color;
import java.awt.Component;
import java.util.Enumeration;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JscrollPane;
import javax.swing.Jtable;
import javax.swing.SwingUtilitIEs;
import javax.swing.table.DefaulttableCellRenderer;
import javax.swing.table.DefaulttableModel;
import javax.swing.table.tableCellRenderer;
import javax.swing.table.tablecolumn;

public class Testtable {

    public class myTableCellRenderer extends DefaulttableCellRenderer implements tableCellRenderer {

        @OverrIDe
        public Component gettableCellRendererComponent(Jtable table, Object value, Boolean isSELEcted, Boolean hasFocus, int row, int column) {
            setBACkground(null);
            super.gettableCellRendererComponent(table, value, isSELEcted, hasFocus, row, column);
            setText(String.valueOf(value));
            Boolean interesTingRow = row % 5 == 2;
            Boolean secondcolumn = column == 1;
            if (interesTingRow && secondcolumn) {
                setBACkground(color.oRANGE);
            } else if (interesTingRow) {
                setBACkground(color.YELLOW);
            } else if (secondcolumn) {
                setBACkground(color.RED);
            }
            return this;
        }

    }

    private JFrame f;
    private Jtable table;

    protected voID initUI() {
        Vector<Vector<Object>> data = new Vector<Vector<Object>>();
        Vector<String> columnames = new Vector<String>();
        columnames.add("Col 0");
        columnames.add("Col 1");
        columnames.add("Col 2");
        for (int i = 0; i < 20; i++) {
            Vector<Object> v = new Vector<Object>();
            v.add(i % 3 == 0 ? "Hello" : "World");
            v.add("Some data in row " + (i + 1));
            v.add("Some other data in row " + (i + 1));
            data.add(v);
        }
        table = new Jtable(new DefaulttableModel(data, columnames));
        Enumeration<tablecolumn> en = table.getcolumnModel().getcolumns();
        while (en.hasMoreElements()) {
            tablecolumn tc = en.nextElement();
            tc.setCellRenderer(new myTableCellRenderer());
        }
        f = new JFrame();
        f.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        f.setLOCATIOnrelativeTo(null);
        f.add(new JscrollPane(tablE));
        f.pack();
        f.setVisible(true);

    }

    public static voID main(String[] args) {

        SwingUtilitIEs.invokelater(new Runnable() {

            @OverrIDe
            public voID run() {
                new Testtable().initUI();
            }
        });
    }

}

解决方法

我想为jTable中的特定行着色..i通过使用此代码对列进行了处理,

private class CustomcatellRenderer extends DefaultTableCellRenderer {

/* (non-JavadoC)
 * @see    
javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,java.lang.object,Boolean,int,int)
 */

    @Override
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.pink);

 return rendererComp ;
 }

}

我使用上面的代码调用

 jTable1.getcolumnModel().getcolumn(3).setCellRenderer(new CustomcatellRenderer());

但是我想对jTable中的行执行相同的操作。对于行,则没有getcolumnModel()或getcolumn()。那么替代方法是什么呢?我正在使用Java
Swing在Netbeans中进行此操作。

大佬总结

以上是大佬教程为你收集整理的着色jTable行全部内容,希望文章能够帮你解决着色jTable行所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。