Java 将彩色行添加到JTable
我有一张表格要填写,还有3个复选框(黄橙红),当我填写表格并选择一种颜色时,我点击一个按钮,将选择颜色的行添加到Jtable中。 我使用了一个TableCellRenderer,它可以工作,但是当我做了三四次操作时,我会将所有的第th行都涂上选中的复选框。如何使每一行都有他的颜色? 这是我的密码:Java 将彩色行添加到JTable,java,swing,colors,jtable,tablecellrenderer,Java,Swing,Colors,Jtable,Tablecellrenderer,我有一张表格要填写,还有3个复选框(黄橙红),当我填写表格并选择一种颜色时,我点击一个按钮,将选择颜色的行添加到Jtable中。 我使用了一个TableCellRenderer,它可以工作,但是当我做了三四次操作时,我会将所有的第th行都涂上选中的复选框。如何使每一行都有他的颜色? 这是我的密码: JTable table = new JTable( new DefaultTableModel(new Object[][] {}, columnNames));
JTable table = new JTable(
new DefaultTableModel(new Object[][] {}, columnNames));
TableColumn column1 = table.getColumnModel().getColumn(
0);
column1.setCellRenderer(getRenderer());
TableColumn column3 = table.getColumnModel().getColumn(
1);
column3.setCellRenderer(getRenderer());
TableColumn column2 = table.getColumnModel().getColumn(
2);
column2.setCellRenderer(getRenderer());
String desc = display.getSelectedItem().toString();
DefaultTableModel tm = (DefaultTableModel) table.getModel();
String numcam = num_cam;
String timeStamp = new SimpleDateFormat(
"yyyy-MM-dd--HH:mm:ss").format(Calendar
.getInstance().getTime());
tm.addRow(new Object[] { new String(timeStamp), new String(numcam),
new String(desc) });
table.setModel(tm);
// reinitialiser les boutons apres le click
buttonGroup.clearSelection();
buttonGroup2.clearSelection();
这是我的手机代码
private static TableCellRenderer getRenderer() {
return new DefaultTableCellRenderer() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component tableCellRendererComponent = super
.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
tableCellRendererComponent.setBackground(Color.black);
setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
// verification de l couleur du bouton clické
if (yellow.isSelected()) {
tableCellRendererComponent.setForeground(new Color(255,
255, 51));
} else if (orange.isSelected()) {
tableCellRendererComponent.setForeground(new Color(255,
153, 0));
} else if (red.isSelected()) {
tableCellRendererComponent.setForeground(Color.RED);
}
return tableCellRendererComponent;
}
};
}
如何使每一行都有他的颜色
我不清楚这个问题:
为什么
if(yellow.isSelected()==true)
只要if(yellow.isSelected())
就行了这不是真正的问题是的,可能不是问题,只是一个建议好建议,当我点击submit按钮时,它将添加一个新行,其中包含我表单中的值,该行的颜色取决于所选的颜色。对不起,我不明白你的建议,因为我是个新手java@user2928578,我建议行的颜色需要基于TableModel中的数据。有关此方法的示例,请参见。在这种情况下,您希望TableModel中的数据存储颜色,但不希望在表中显示列。因此,您需要从表中删除TableColumn
。请参阅JTable的getColumn()
和removeColumn()
方法以帮助您完成此操作。@user2928578这是完整的工作代码,您可以下载、编译和执行。再简单不过了。我不知道你对这个例子有什么不理解。