Lun*_*una 4 java swing jtable tablecellrenderer
我想为jTable中的特定行着色..我使用此代码为列做了,
private class CustomCellRenderer extends DefaultTableCellRenderer {
/* (non-Javadoc)
* @see
javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, 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 ;
}
}
Run Code Online (Sandbox Code Playgroud)
我用上面的代码调用,
jTable1.getColumnModel().getColumn(3).setCellRenderer(new CustomCellRenderer());
Run Code Online (Sandbox Code Playgroud)
但是我想对jTable中的行做同样的事情.在行的情况下没有getColumnModel()或getColumn().那么这样做的替代方法是什么?我是通过使用Java Swing在Netbeans中完成的.
以下是如何组合列颜色和行颜色的示例.您基本上在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();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15795 次 |
| 最近记录: |