[英]How to make “if” condition change automatically depending on Command Line Argument in Java?
[英]How to change the color of the line depending on the condition?
我的表看起来像这样,一切正常,一切正常)我需要如果满足 ARRIVAL = 0 或 DEPART = 0 条件,那么整行中的文本颜色是不同的颜色,例如,红色或黑色,没关系,我不知道如何更改它,也许很容易,我是新手)我还没有在其他问题中找到这个问题的答案
private void setTableSettingsReport() {
jTblReport.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jTblReport.setRowSelectionAllowed(true);
jTblReport.setAutoCreateRowSorter(true);
jTblReport.getTableHeader().setReorderingAllowed(false);
String[] dbColNames = new String[13];
dbColNames[0] = "ID";
dbColNames[1] = "Имя";
dbColNames[2] = "Фамилия";
dbColNames[3] = "Отчество";
dbColNames[4] = "Дата прихода с ";
dbColNames[5] = "Дата прихода до";
dbColNames[6] = "Прибытие";
dbColNames[7] = "Дата ухода с ";
dbColNames[8] = "Дата ухода до";
dbColNames[9] = "Убытие";
dbColNames[10] = "Причина опоздания";
dbColNames[11] = "Причина раннего ухода";
dbColNames[12] = "ID лица";
// dbColNames[8] = "Дата начала";
// dbColNames[9] = "Дата окончания";
tm.setColumnIdentifiers(dbColNames);
jTblReport.setModel(tm);
jTblReport.setSelectionForeground(Color.white);
jTblReport.setSelectionBackground(Color.red);
jTblReport.getColumnModel().getColumn(0).setPreferredWidth(10);
jTblReport.getColumnModel().getColumn(1).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(2).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(3).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(4).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(5).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(6).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(7).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(8).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(9).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(10).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(10).setPreferredWidth(60);
jTblReport.getColumnModel().getColumn(10).setPreferredWidth(60);
}
public void searchIdentificationsReport(boolean all) {
int z = 0;
while (z < tm.getRowCount()) {
tm.removeRow(z);
}
Statement statement = null;
try {
statement = getDbConnection().createStatement();
String sql = "select a.id, pr.p_name,pr.p_surname,pr.p_patronic, a.date_arrival_from,a.date_arrival_to, a.arrival,a.date_departure_from,a.date_departure_to, a.depart, a.arrival_comment, a.depart_comment,a.prsn_id "
+ " FROM bio.persons pr, attendance a where pr.p_id=a.prsn_id and a.date<=CURDATE() ";
if (cbPersons.getSelectedItem() != null && model.getSelectedItem() != null) {
CodeValueDTO dto = (CodeValueDTO) model.getSelectedItem();
sql += " and pr.p_id='" + dto.getId() + "'";
}
if (!all) {
sql += " and (ARRIVAL =0 or DEPART=0)";
}
statement.execute(sql);
ResultSet rs = statement.getResultSet();
while (rs.next()) {
Object[] objects = new Object[13];
for (int i = 0; i < 13; i++) {
objects[i] = rs.getObject(i + 1);
}
if (rs.getInt(7) == 0) {
objects[6] = "Нет";
} else {
objects[6] = "Да";
}
if (rs.getInt(10) == 0) {
objects[9] = "Нет";
} else {
objects[9] = "Да";
}
tm.addRow(objects);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
statement.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
dbColNames[6] = "Прибытие"; dbColNames[9] = "Убытие"; 这些是相同的字段,具体取决于您需要更改整条线的颜色
您需要为此 JTable 设置自己的单元格渲染器(我假设您使用的是 JTable)。
public class MyCellRenderer extends DefaultTableCellRenderer{
private int columNum = 0;
public MyCellRenderer(int columNum) {
// TODO Auto-generated constructor stub
this.columNum = columNum;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// TODO Auto-generated method stub
Object object = table.getValueAt(row, this.columNum);
if(object.equals("yourValue")) {
setBackground(Color.RED);
}
return this;
}
}
并且您需要在创建后立即将此渲染器设置为您的 jtable。
jTabReport.setDefaultRenderer(Object.class, new MyCellRenderer(3));
为此,您创建一个这样的类并从 DefaultTableCellRenderer 扩展并覆盖 getTableCellRendererComponent。 构造函数传递了存储“arival”信息的列号。 对于行中的每个单元格,您检查指定的列是否包含 arival = 0(这必须始终是相同的列)。 如果是这样设置背景。 “yourValue”只是一个例子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.