public void chooserColor(int n) {//n为要改变颜色的行
TableColumn column = table.getColumnModel().getColumn(n);
column.setCellRenderer(new RowRenderer(n));
table.updateUI(); }}class RowRenderer extends DefaultTableCellRenderer {
private int r; public RowRenderer(int r) {
this.r = r;
} public Component getTableCellRendererComponent(JTable t, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
System.out.println("--- background color ---" + t.getBackground());
System.out.println("--- r ---" + r);
if (row == r) {
System.out.println("---- color row ---" + row);
System.out.println("---- color colunm ---" + column);
setForeground(Color.LIGHT_GRAY);
}
return super.getTableCellRendererComponent(t, value, isSelected,
hasFocus, row, column);
}
}
我这样写 就改变了列的前景色~~~ 我想改变行的~~
TableColumn column = table.getColumnModel().getColumn(n);
column.setCellRenderer(new RowRenderer(n));
table.updateUI(); }}class RowRenderer extends DefaultTableCellRenderer {
private int r; public RowRenderer(int r) {
this.r = r;
} public Component getTableCellRendererComponent(JTable t, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
System.out.println("--- background color ---" + t.getBackground());
System.out.println("--- r ---" + r);
if (row == r) {
System.out.println("---- color row ---" + row);
System.out.println("---- color colunm ---" + column);
setForeground(Color.LIGHT_GRAY);
}
return super.getTableCellRendererComponent(t, value, isSelected,
hasFocus, row, column);
}
}
我这样写 就改变了列的前景色~~~ 我想改变行的~~
column.setCellRenderer(new RowRenderer(n));
TableColumn column = table.getColumnModel().getColumn(n);
column.setCellRenderer(new RowRenderer(n));你这个地方就是改变了这个列的。
同意上述公约者·申请加入!
QQ群号:25922618(一群已经满)
请加备用群:17615698
Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column)
方法,在里面添加代码
if(row == n)//n为要改变的行
{
setBackground(color);//color可以是特定的颜色,也可以从table中取得,如果是后者,那么要自己写个table,提供个共有方法,供renderer调用,因为getTableCellRendererComponent方法的参数中有table变量,可以调用自己写的方法。
}
不知道能不能看明白
import java.awt.Component;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;public class TableRowColorTest { /**
* @param args
*/
public static void main(String[] args) {
JFrame f = new JFrame();
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return 10;
} public int getRowCount() {
return 10;
} public Object getValueAt(int row, int col) {
return new Integer(row * col);
} public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
};
f.getContentPane().add(new JScrollPane(new M_Table(dataModel)));
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
}}class M_Renderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}class M_Table extends JTable { public M_Table(TableModel dataModel) {
super(dataModel);
} public Color getSpecifiedRowBackgroundColor(int row) {
/**
* your logic
*/
if (row == 0) {
return Color.BLUE;
} else if (row == 1) {
return Color.RED;
} else {
return super.getBackground();
}
} public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Object value = getValueAt(row, column); boolean isSelected = false;
boolean hasFocus = false; // Only indicate the selection and focused cell if not printing
if (!isPaintingForPrint()) {
isSelected = isCellSelected(row, column); boolean rowIsLead = (selectionModel.getLeadSelectionIndex() == row);
boolean colIsLead = (columnModel.getSelectionModel().getLeadSelectionIndex() == column); hasFocus = (rowIsLead && colIsLead) && isFocusOwner();
}
((DefaultTableCellRenderer) renderer).setBackground(this
.getSpecifiedRowBackgroundColor(row));
return renderer.getTableCellRendererComponent(
this,
value,
isSelected,
hasFocus,
row,
column);
}
}
还是贴段代码给你吧
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;public class TableRowColorTest { public static final Color SELECTED_COLOR = Color.BLUE; /**
* @param args
*/
public static void main(String[] args) {
JFrame f = new JFrame();
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return 10;
} public int getRowCount() {
return 10;
} public Object getValueAt(int row, int col) {
return new Integer(row * col);
} public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
};
M_Table table = new M_Table(dataModel);
f.getContentPane().add(new JScrollPane(table));
table.setSpecifiedRowBackgroundColor(0, SELECTED_COLOR);
table.setSpecifiedRowBackgroundColor(1, Color.RED);
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
}}class M_Renderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Component component2 =
super
.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (table instanceof M_Table) {
M_Table t = (M_Table) table;
if (t.getSpecifiedRowBackgroundColor(row) == TableRowColorTest.SELECTED_COLOR) {
component2.setBackground(TableRowColorTest.SELECTED_COLOR);
}
}
return component2;
}
}class M_Table extends JTable { private Map<Integer, Color> colorMap = new HashMap<Integer, Color>(); public M_Table(TableModel dataModel) {
super(dataModel);
} public TableCellRenderer getCellRenderer(int row, int col) {
return new M_Renderer();
} public Color getSpecifiedRowBackgroundColor(int row) {
/**
* your logic
*/
if (colorMap.containsKey(row)) {
return colorMap.get(row);
} else {
return this.getBackground();
}
// if (row == 0) {
// return TableRowColorTest.SELECTED_COLOR;
// } else if (row == 1) {
// return Color.RED;
// } else {
// return super.getBackground();
// }
} public void setSpecifiedRowBackgroundColor(int row, Color color) {
colorMap.put(row, color);
} public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Object value = getValueAt(row, column); boolean isSelected = false;
boolean hasFocus = false; // Only indicate the selection and focused cell if not printing
if (!isPaintingForPrint()) {
isSelected = isCellSelected(row, column); boolean rowIsLead = (selectionModel.getLeadSelectionIndex() == row);
boolean colIsLead = (columnModel.getSelectionModel().getLeadSelectionIndex() == column); hasFocus = (rowIsLead && colIsLead) && isFocusOwner();
}
((DefaultTableCellRenderer) renderer).setBackground(this
.getSpecifiedRowBackgroundColor(row));
return renderer.getTableCellRendererComponent(
this,
value,
isSelected,
hasFocus,
row,
column);
}
}
这样?
什么叫鼠标选择不了?
不懂
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;public class TableRowColorTest { public static final Color SELECTED_COLOR = Color.BLUE; /**
* @param args
*/
public static void main(String[] args) {
JFrame f = new JFrame();
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return 10;
} public int getRowCount() {
return 10;
} public Object getValueAt(int row, int col) {
return new Integer(row * col);
} public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
};
M_Table table = new M_Table(dataModel);
f.getContentPane().add(new JScrollPane(table));
table.setSpecifiedRowBackgroundColor(0, SELECTED_COLOR);
table.setSpecifiedRowBackgroundColor(1, Color.RED);
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
}}class M_Renderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Component component2 =
super
.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (table instanceof M_Table) {
M_Table t = (M_Table) table;
if (t.getSpecifiedRowBackgroundColor(row) == TableRowColorTest.SELECTED_COLOR) {
component2.setBackground(TableRowColorTest.SELECTED_COLOR);
}
}
return component2;
}
}class M_Table extends JTable { private Map<Integer, Color> colorMap = new HashMap<Integer, Color>(); public M_Table(TableModel dataModel) {
super(dataModel);
} public TableCellRenderer getCellRenderer(int row, int col) {
return new M_Renderer();
} public Color getSpecifiedRowBackgroundColor(int row) {
/**
* your logic
*/
if (colorMap.containsKey(row)) {
return colorMap.get(row);
} else {
return this.getBackground();
}
// if (row == 0) {
// return TableRowColorTest.SELECTED_COLOR;
// } else if (row == 1) {
// return Color.RED;
// } else {
// return super.getBackground();
// }
} public void setSpecifiedRowBackgroundColor(int row, Color color) {
colorMap.put(row, color);
} public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Object value = getValueAt(row, column); boolean isSelected = false;
boolean hasFocus = false; // Only indicate the selection and focused cell if not printing
if (!isPaintingForPrint()) {
isSelected = isCellSelected(row, column); boolean rowIsLead = (selectionModel.getLeadSelectionIndex() == row);
boolean colIsLead = (columnModel.getSelectionModel().getLeadSelectionIndex() == column); hasFocus = (rowIsLead && colIsLead) && isFocusOwner();
}
((DefaultTableCellRenderer) renderer).setBackground(this
.getSpecifiedRowBackgroundColor(row));
return renderer.getTableCellRendererComponent(
this,
value,
isSelected,
hasFocus,
row,
column);
}
}
怎么发不出去阿,这样吗?
2.鼠标选择不了。//不知道什么意思
改写renderer里的方法