Java 条件jtable背景行
嗨,我有一个问题,我有一个表中的人物列表,也有一个向量中的坏人列表,我想加载jtable,穷人用红色标记 tabla=表格 conteo=计数 我所拥有的代码的问题是,尽管有几个匹配品牌,但只有一个匹配品牌Java 条件jtable背景行,java,jtable,Java,Jtable,嗨,我有一个问题,我有一个表中的人物列表,也有一个向量中的坏人列表,我想加载jtable,穷人用红色标记 tabla=表格 conteo=计数 我所拥有的代码的问题是,尽管有几个匹配品牌,但只有一个匹配品牌 tabla.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Obj
tabla.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()
{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
try {
String sql;
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
String bdd = "616c756d6e6f";
String par = "create=true";
String conexion = "jdbc:derby:" + bdd + ";" + par;
Connection con = DriverManager.getConnection(conexion);
sql="select matricula from bajas";
PreparedStatement st = con.prepareStatement(sql);
ResultSet rs= st.executeQuery();
Vector<String> vec = new Vector<String>();
while(rs.next())
{
vec.addElement(rs.getString("matricula"));
}
con.close();
for(int x=0;x<tabla.getRowCount();x++)
{
int conteo=0;
for(String valor:vec)
{
if(valor.equals(tabla.getValueAt(x, 0)))
{
conteo++;
}
}
if(conteo!=0)
{
final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setBackground(row ==x ? Color.RED:null);
return c;
}
}
} catch (SQLException ex) {
Logger.getLogger(InicioAlumnos.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
tabla.setDefaultRenderer(Object.class,新的DefaultTableCellRenderer())
{
@凌驾
公共组件GetTableCellRenderComponent(JTable表、对象值、布尔isSelected、布尔hasFocus、int行、int列)
{
试一试{
字符串sql;
String driver=“org.apache.derby.jdbc.EmbeddedDriver”;
字符串bdd=“616c756d6e6f”;
字符串PAR= =“创建=真”;
String CONEXION =“JDBC:DeBe:++BDD+”;“+PAR”;
Connection con=DriverManager.getConnection(conexion);
sql=“从bajas中选择matricula”;
PreparedStatement st=con.prepareStatement(sql);
结果集rs=st.executeQuery();
向量向量=新向量();
while(rs.next())
{
矢量加法器(rs.getString(“matricula”);
}
con.close();
对于(int x=0;x
不要在渲染器中执行任何可能耗时的操作(对于GUI来说,这是一个非常好的规则)。渲染器负责的每个单元格都可以调用此渲染器(有1000行,预计命中1000次)。相反,请预加载“黑色”列出并使用缓存的值。如果需要,请提供重新加载列表的方法
始终从单元渲染器返回值,否则可能会导致其他问题
这个
for(int x=0;x<tabla.getRowCount();x++)
{
int conteo=0;
for(String valor:vec)
{
if(valor.equals(tabla.getValueAt(x, 0)))
{
conteo++;
}
}
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (vec.contains(table.getValueAt(row, 0)) {
setBackground(Color.RED);
}
return this;