Java 更改我的JTable中特定行的颜色
我正在寻找如何更改我的Java 更改我的JTable中特定行的颜色,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,我正在寻找如何更改我的JTable中某些行的颜色,这些行在名为Notfoundrow的整数向量中具有索引,但我遇到的问题是,表中的所有行都将颜色更改为红色 这是我的密码: package essai_trafficclass; import java.awt.Color; import java.awt.Component; import java.util.ArrayList; import javax.swing.JTable; import javax.swing.table.Defaul
JTable
中某些行的颜色,这些行在名为Notfoundrow
的整数向量中具有索引,但我遇到的问题是,表中的所有行都将颜色更改为红色
这是我的密码:
package essai_trafficclass;
import java.awt.Color;
import java.awt.Component;
import java.util.ArrayList;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class MonCellRenderer extends DefaultTableCellRenderer {
public static ArrayList<Integer> Notfoundrow1 = OneWayRelation.Notfoundrow;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
int L = 0;
while (L < Notfoundrow1.size()) {
System.out.println("la valeur du vecteur " + Notfoundrow1.get(L));
if (row == Notfoundrow1.get(L) && column == 1) {
cell.setBackground(Color.RED);
} else if (row == Notfoundrow1.get(L) && column == 1) {
cell.setBackground(Color.RED);
} else {
cell.setBackground(Color.WHITE);
}
L++;
}
return cell;
}
}
tableM
是我想要更改其行颜色的表
谢谢您的帮助。您可以大大简化您的逻辑 而不是您的
while
循环,利用API的可用功能
if (column == 1 || Notfoundrow1.contains(row)) {
setBackground(Color.RED);
} else {
setBackground(Color.WHITE);
}
导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Component;
导入java.awt.EventQueue;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
导入javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.JTable;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
导入javax.swing.table.DefaultTableCellRenderer;
导入javax.swing.table.DefaultTableModel;
公共类TestCellRender02{
公共静态void main(字符串[]args){
新的TestCellRender02();
}
private List notFound=新的ArrayList(25);
公共TestCellRender02(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
Random rand=新的Random(System.currentTimeMillis());
DefaultTableModel=new DefaultTableModel(新对象[]{“A”,“B”},0);
对于(int-index=0;index<100;index++){
addRow(新对象[]{index,index});
if(rand.nextBoolean()){
未找到。添加(索引);
System.out.println(“未找到@”+索引);
}
}
JTable table=新的JTable(模型);
setDefaultRenderer(Object.class,新的MonCellRenderer());
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(新的JScrollPane(表));
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类MonCellRenderer扩展了DefaultTableCellRenderer{
公共组件GetTableCellRenderComponent(JTable表、对象值、,
布尔值(已选择,布尔值为焦点,整数行,整数列){
super.getTableCellRenderComponent(表、值、,
isSelected、hasFocus、row、column);
如果(列==1 | |未找到。包含(行)){
挫折地面(颜色:红色);
}否则{
挫折地面(颜色:白色);
}
归还这个;
}
}
}
ps-您可能还想通读一下您可以大大简化您的逻辑 而不是您的
while
循环,利用API的可用功能
if (column == 1 || Notfoundrow1.contains(row)) {
setBackground(Color.RED);
} else {
setBackground(Color.WHITE);
}
导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Component;
导入java.awt.EventQueue;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
导入javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.JTable;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
导入javax.swing.table.DefaultTableCellRenderer;
导入javax.swing.table.DefaultTableModel;
公共类TestCellRender02{
公共静态void main(字符串[]args){
新的TestCellRender02();
}
private List notFound=新的ArrayList(25);
公共TestCellRender02(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
Random rand=新的Random(System.currentTimeMillis());
DefaultTableModel=new DefaultTableModel(新对象[]{“A”,“B”},0);
对于(int-index=0;index<100;index++){
addRow(新对象[]{index,index});
if(rand.nextBoolean()){
未找到。添加(索引);
System.out.println(“未找到@”+索引);
}
}
JTable table=新的JTable(模型);
setDefaultRenderer(Object.class,新的MonCellRenderer());
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(新的JScrollPane(表));
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类MonCellRenderer扩展了DefaultTableCellRenderer{
公共组件GetTableCellRenderComponent(JTable表、对象值、,
布尔值(已选择,布尔值为焦点,整数行,整数列){
super.getTableCellRenderComponent(表、值、,
isSelected、hasFocus、row、column);
如果(列==1 | |未找到。包含(行)){
挫折地面(颜色:红色);
}否则{
挫折地面(颜色:白色);
}
ret
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class TestCellRenderer02 {
public static void main(String[] args) {
new TestCellRenderer02();
}
private List<Integer> notFound = new ArrayList<>(25);
public TestCellRenderer02() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
Random rand = new Random(System.currentTimeMillis());
DefaultTableModel model = new DefaultTableModel(new Object[]{"A", "B"}, 0);
for (int index = 0; index < 100; index++) {
model.addRow(new Object[]{index, index});
if (rand.nextBoolean()) {
notFound.add(index);
System.out.println("Not found @ " + index);
}
}
JTable table = new JTable(model);
table.setDefaultRenderer(Object.class, new MonCellRenderer());
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class MonCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
if (column == 1 || notFound.contains(row)) {
setBackground(Color.RED);
} else {
setBackground(Color.WHITE);
}
return this;
}
}
}