就自己实现CellRenderer好了.
getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
TableCellRenderer中必须实现上面这个方法, 里面的int row就是行号.
你判断出奇偶后自己设一个背景色就可以了.
getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
TableCellRenderer中必须实现上面这个方法, 里面的int row就是行号.
你判断出奇偶后自己设一个背景色就可以了.
但是我用JLabel时无法改变背景色
用JTextField又有讨厌的黑框,有什么办法去掉呢?
或是应该用别的控件???
起先我一直用 DefaultTableCellRenderer 里的 setValue(Object value)
谢谢 biti_9512207(波波斯基)!=================================================================
/**
* [RoundColorTable.java] 间隔色的 JTable
*
*
* 创建日期:(2003-8-25)
* @author:ONE_Fox
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class RoundColorTable extends JFrame {
private String[] colname = {"第1列","第2列","第3列","第4列","第5列"}; //表头信息
private String[][] data = new String[10][5]; //表内容
int[] selected = null; //选择记录
//界面组件----------------------//
private JScrollPane scroPanel = new JScrollPane(); //中底层滚动面板
private DefaultTableModel model; //列表默认TableModel
private JTable table;
/**
* 构造方法 SelectionDemo()
* @param data String[][]
* @param colname String[]
*/
public RoundColorTable() {
makeFace();
addListener();
showFace();
}/**
* 方法: 界面构建 makeFace()
*/
private void makeFace() {
//表内容数组 data[][] 赋值------------//
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 5; j++) {
data[i][j] = "( " + (j+1) + ", " + (i+1) + " )";
}
}
table = new JTable(model = new DefaultTableModel(data,colname));
//设置列表现器------------------------//
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if(row%2 == 0)
setBackground(Color.white);
else if(row%2 == 1)
setBackground(new Color(206,231,255));
return super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
}
};
for(int i = 1; i <= 5; i++) {
table.getColumn("第"+i+"列").setCellRenderer(tcr);
}
scroPanel.getViewport().setBackground(Color.white);
scroPanel.getViewport().add(table);
//总体界面布局------------------------//
getContentPane().add(scroPanel, BorderLayout.CENTER);
}/**
* 方法: 界面显示 showFace()
*/
private void showFace() {
setTitle("间隔色的 JTable");
setSize(500,400);
Toolkit tmpTK = Toolkit.getDefaultToolkit();
Dimension dime = tmpTK.getScreenSize();
Dimension frameSize = this.getPreferredSize();
setLocation(dime.width/2 - (frameSize.width/2),
dime.height/2 - (frameSize.height/2));
setResizable(false);
show();
}/**
* 方法: 添加事件监听 addListener()
*/
private void addListener() {
this.addWindowListener(new WindowAdapter(){ //添加窗口关闭事件
public void windowClosing(WindowEvent e){
new JFrame().setVisible(false);
dispose();
}
});
}
/**
* 程序入口 main()
*/
public static void main(String args[]) {
//获取设置系统风格-------------------//
try {
String laf = UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(laf);
} catch (Exception e) {}
new RoundColorTable();
}
}
谢谢biti_9512207(波波斯基)的指点!
谢谢onefox(一品狐)的不倦帮助!
谢谢sun2927(小健)的"up"!结贴!!!!!!!!!!!!!!!!!!!!!
谢谢onefox(一品狐)的不倦帮助!
谢谢sun2927(小健)的"up"!结帖!!!!!!!!!!!