如题。这是我的代码,他只能给整行加颜色,而不能给某个格加。请大虾帮忙改一下,谢谢各位了!!package table;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.border.AbstractBorder;
import javax.swing.border.Border;
import javax.swing.plaf.basic.BasicBorders.FieldBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;/**
* @author James Woo 2006-5-17 17:51:17 @
*/
public class Example {
private String[] headers = new String[] { "1", "2", "3" }; // private Object[][] values = new Object[][] {
// { "james", new Integer(333), new Boolean(true) },
// { "woo", new Integer(333), new Boolean(true) } };
private Object[][] values = new Object[][] { { "", "", "" }, { "", "", "" } }; public Example() {
DefaultTableModel tm = new DefaultTableModel(values, headers); JFrame f = new JFrame();
f.setSize(600, 160);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JTable jt = new JTable(tm); FieldBorder border = new FieldBorder(Color.WHITE, Color.WHITE,
Color.WHITE, Color.WHITE);
jt.setBorder(border); jt.setDefaultRenderer(Object.class, new TableCellRenderer() { public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JTextField text = new JTextField(value.toString());
if (row == 0) { text.setBackground(Color.GREEN);
text.setForeground(Color.BLACK);
} else {
text.setBackground(Color.YELLOW);
text.setForeground(Color.CYAN); } return text;
} }); JScrollPane jsp = new JScrollPane(jt);
f.getContentPane().add(jsp, BorderLayout.CENTER);
f.setVisible(true);
} public static void main(String[] args) {
new Example();
String[] headers1 = new String[5]; for (int i = 0; i < headers1.length; i++) {
headers1[i] = i + 1 + "";
}
}
}
import java.awt.Color;
import java.awt.Component;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.border.AbstractBorder;
import javax.swing.border.Border;
import javax.swing.plaf.basic.BasicBorders.FieldBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;/**
* @author James Woo 2006-5-17 17:51:17 @
*/
public class Example {
private String[] headers = new String[] { "1", "2", "3" }; // private Object[][] values = new Object[][] {
// { "james", new Integer(333), new Boolean(true) },
// { "woo", new Integer(333), new Boolean(true) } };
private Object[][] values = new Object[][] { { "", "", "" }, { "", "", "" } }; public Example() {
DefaultTableModel tm = new DefaultTableModel(values, headers); JFrame f = new JFrame();
f.setSize(600, 160);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JTable jt = new JTable(tm); FieldBorder border = new FieldBorder(Color.WHITE, Color.WHITE,
Color.WHITE, Color.WHITE);
jt.setBorder(border); jt.setDefaultRenderer(Object.class, new TableCellRenderer() { public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JTextField text = new JTextField(value.toString());
if (row == 0) { text.setBackground(Color.GREEN);
text.setForeground(Color.BLACK);
} else {
text.setBackground(Color.YELLOW);
text.setForeground(Color.CYAN); } return text;
} }); JScrollPane jsp = new JScrollPane(jt);
f.getContentPane().add(jsp, BorderLayout.CENTER);
f.setVisible(true);
} public static void main(String[] args) {
new Example();
String[] headers1 = new String[5]; for (int i = 0; i < headers1.length; i++) {
headers1[i] = i + 1 + "";
}
}
}
解决方案 »
- JPCAP ARP欺骗问题,请高手看看
- 关于scanner读写系统输入的问题
- 小女子 第一次求各位帮忙啊 急急急!!
- 开发java程序时数据库一般用哪一种数据库?
- 高分求解,正则表达式能否有这样的逻辑(内有详细描述),望高手帮忙看看
- 谁有JDK?我的丢了,现在不好找回来
- 我的swing程序在jbuilder运行,图片按钮可以正常出现,但编译之后成exe图片按钮没出现,请教
- JAVA是不是还不能做出这个效果来???如果未在表格一行的最后单元格按下回车键,就让回车动作等于TAB动作,反之到了最后单元格按下回车
- java中太多名词搞不懂了,有人能帮一下我吗?
- 快来帮帮忙!一个jni问题。
- 一组对象,根据对象的两个属性分类的问题
- 判断两字符是否相等
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Vector;import javax.swing.DefaultCellEditor;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;/**
* @author it31 可以添加Component的JTable
*/
public class ContainerTable extends JTable {
private ContainerTableEditor ctEditor;
private ContainerTableRender ctRender; public ContainerTable() {
super();
} public ContainerTable(Vector row, Vector column) {
super(row, column);
}
/**
* 当表中有数据更新时,保证新添加的控件能显示。 如果控件没正确显示,请确认是否调用了该方法。
*/
public void addNotify() {
if (ctEditor == null)
ctEditor = new ContainerTableEditor();
if (ctRender == null)
ctRender = new ContainerTableRender();
for (int i = 0; i < this.getColumnCount(); i++) {
TableColumn tc = this.getColumn(this.getColumnName(i));
tc.setCellEditor(ctEditor);
tc.setCellRenderer(ctRender);
}
super.addNotify();
} class ContainerTableEditor extends DefaultCellEditor {
private Component com;
private boolean isComponent; public ContainerTableEditor() {
super(new JTextField());
} /**
* 设置编辑组件为实际的Component,同时记住此状态, 防止完成编辑后,此单元格内容还原为普通的value
*/
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
if (value instanceof Component) {
com = (Component) value;
isComponent = true;
} else {
com = super.getTableCellEditorComponent(table, value,
isSelected, row, column);
isComponent = false;
}
return com;
} /**
* 如果此单元格内容为Component则返回对应Component
*/
public Object getCellEditorValue() {
if (isComponent)
return com;
return super.getCellEditorValue();
}
} class ContainerTableRender extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
if (value instanceof Component) {
return (Component) value;
} else
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
}
}缺点是要点两下才能获得焦点
ContainerTable ct1=new ContainerTable();
ct1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, new JButton("Test"), null, null},
{null, null,"asdas\nasdas\nasdas\n", null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
ContainerTable ct2=new ContainerTable();
ct2.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, new JButton("Test"), null, null},
{null, ct1,"asdas\nasdas\nasdas\n", null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));