具体一些,从数据库里获得的表,已经按照“部门”排列好了,如何做到 相同部门的行同一种颜色,相邻不同部门用不同的颜色呢?网上都是设置某个单元格的颜色,如何设置符合条件的整行的颜色呢?各位高手要帮忙啊。谢谢各位!
解决方案 »
- 7个8如何(加,减,乘,除)算出等于2000
- 急事
- swing 实现图片背景的问题
- Graphics.drawString()方法画中文字符出现乱码怎么解决?(急)
- 编写一个Applet程序,显示系统的时间(格式:年-月-日:小时:分钟:秒)信息,要求使用Date、Calendar、Dateformate类。
- 开发swing 的JFace插件哪里有下,for eclipse
- 关于override and overload
- 连接远程数据库的问题?快来看,一定能学到东西
- 新人第一次发帖。java日历程序问题,求教各路大神,不胜感激!
- java程序异常
- 窗口的创建与监听事件的处理不在同一个类,如何实现关闭前一个窗口?
- 各位高手特急,给我看看我错在哪了
import java.awt.Component;
import java.util.HashMap;import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class ColorTableCellRenderer extends DefaultTableCellRenderer { private HashMap<String, Color>nameToColor;
private int partmentColumn;
/**
* 构造函数传入“部门”的列序
* @param partmentColumn
*/
public ColorTableCellRenderer(int partmentColumn) {
this.partmentColumn=partmentColumn;
nameToColor=new HashMap<String, Color>();
nameToColor.put("人力资源", Color.BLUE);
nameToColor.put("技术部", Color.LIGHT_GRAY);
nameToColor.put("销售部", Color.RED);
//添加 部门与相应颜色对应颜色
//如果你要的效果是不固定的,可以循环使用几种颜色,
//只需要记录上一次的部门不等于这次的部门就改变颜色
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Object partment=table.getValueAt(row, partmentColumn);
Color color = nameToColor.get(partment);
if(color!=null) {
setBackground(color);
}
return this;
}}用法应该会了吧?
table.setCellRenderer(...)
或者
table.setDefaultCellRenderer(...)
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;public class tabChange implements MouseListener {
JFrame f; JPanel panel1; JTable tab; Object[][] rowData = { { "1", "a", "aa" }, { "2", "b", "bb" },
{ "3", "c", "cc" }, { "1", "a", "aa" }, { "2", "b", "bb" },
{ "3", "c", "cc" } }; Object[] colName = { "num", "item1", "item2" }; public tabChange() {
f = new JFrame("");
panel1 = new JPanel();
panel1.setPreferredSize(new Dimension(300, 200));
tab = new JTable(rowData, colName);
tab.addMouseListener(this);
tab.setDefaultRenderer(Object.class, new TableRenderer());
panel1.add(tab);
f.add(panel1, BorderLayout.NORTH);
f.pack();
f.setVisible(true);
f.setResizable(true);
} public static void main(String[] args) {
new tabChange();
} public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
tab.setSelectionBackground(Color.blue); System.out.println(tab.getSelectedColumns().length); } public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub } public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub } public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub }
}class TableRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (column > 0) {
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
return this;
}
for (int i = 0; i < table.getColumnCount(); i++) {
if (value.equals("1")) {
super.setBackground(Color.RED);
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, i);
} else if (value.equals("2")) {
super.setBackground(Color.BLUE);
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, i);
} else {
super.setBackground(Color.GREEN);
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, i);
}
}
return this;
}}