jTable如何更改特定行上的单元格颜色。JAVA
我制作了一个java应用程序来管理任务 我的应用程序连接到一个MySQL数据库 我需要优先级等于1的表行自动更改颜色。我一直在搜索并找到一些示例,但我无法使用我的表。 我的表是使用拖放创建的,因此它是默认类型,您可以通过代码看到 有人能帮我在我的小应用程序中实现这个功能吗 我真的很气馁 对不起大家 有人能帮我吗 我的jtable的代码jTable如何更改特定行上的单元格颜色。JAVA,java,swing,jtable,Java,Swing,Jtable,我制作了一个java应用程序来管理任务 我的应用程序连接到一个MySQL数据库 我需要优先级等于1的表行自动更改颜色。我一直在搜索并找到一些示例,但我无法使用我的表。 我的表是使用拖放创建的,因此它是默认类型,您可以通过代码看到 有人能帮我在我的小应用程序中实现这个功能吗 我真的很气馁 对不起大家 有人能帮我吗 我的jtable的代码 DefaultTableModel tmTasks = new DefaultTableModel(null, new String[]{"Status", "P
DefaultTableModel tmTasks = new DefaultTableModel(null, new String[]{"Status", "Priority", "Task", "Desc", "Date"});
List<Tasks> tasks;
ListSelectionModel lsmTasks;
private void showTasks(List<Tasks> tasks) {
while (tmTasks.getRowCount() > 0) {
tmTasks.removeRow(0);
}
if (tasks.size() == 0) {
JOptionPane.showMessageDialog(null, "NO Tasks");
} else {
String[] line = new String[]{null, null, null};
for (int i = 0; i < tasks.size(); i++) {
tmTasks.addRow(line);
tmTasks.setValueAt(tasks.get(i).getStatus(), i, 0);
tmTasks.setValueAt(tasks.get(i).getPriority(), i, 2);
tmTasks.setValueAt(tasks.get(i).getTasks(), i, 1);
tmTasks.setValueAt(tasks.get(i).getDesc(), i, 3);
tmTasks.setValueAt(tasks.get(i).getDate(), i, 4);
}
}
}
DefaultTableModel tmTasks=新的DefaultTableModel(空,新字符串[]{“状态”、“优先级”、“任务”、“说明”、“日期”});
列出任务;
ListSelectionModel lsmTasks;
私有void showTasks(列出任务){
while(tmTasks.getRowCount()>0){
tmTasks.removorow(0);
}
如果(tasks.size()==0){
showMessageDialog(null,“无任务”);
}否则{
字符串[]行=新字符串[]{null,null,null};
对于(int i=0;i
我的JT能够完成任务
您的表格需要一个单元格渲染器。像这样的
public class PriorityCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
if (Integer.valueOf(1).equals(table.getValueAt(row, 1))) {
setForeground(Color.RED); // or background
}
return this;
}
}
安装渲染器:
table.setDefaultRenderer(Object.class, new PriorityCellRenderer());
昨天问的问题有什么问题,为了更好的帮助,请尽快发布一个SSCCE/MCVE简短、可运行、可编译且带有本地变量中JTable的硬编码值,因为双击是TableCellEditor的加速器,我不想总是带着这些问题,因为没有得到帮助而让我感到无聊,所以,试着做些不同的事情,不要屠杀那些好心帮助我的人。你说的是双击?代码在哪里?您可以使用
e.getClickCount==2
,这里e
是MouseEvent
@rpirez/,阅读您的一些需求是否符合…Integer==Integer,而不是equals@mKorbel为什么不呢?table.getValueAt()返回Object,因此我需要强制转换该值或使用equals。感谢回复@SergiyMedvynskyy。我试试你给我的密码。并更改所有行的颜色:S甚至更改值测试的优先级从表1到表2。@rpirez抱歉,我无法理解。所有行的前景现在是红色的还是只有优先级为1的行的前景?非常感谢@SergiyMedvynskyy。你真的帮了我。