--------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.WindowListener;
import java.awt.event.WindowEvent;
import javax.swing.JTable;
public class RowHeaderExample extends JFrame
{
public RowHeaderExample()
{
super("aaaaaaaaa");
setSize(500, 200);
ListModel lm = new AbstractListModel()
{
String headers[] =
{
"a", "b", "c", "d", "e", "f","g","h","i","g"}; public int getSize()
{
return headers.length;
} public Object getElementAt(int index)
{
return headers[index];
}
};
Object data[][] = new Object[10][6];
String colname[] =
{
"1", "2", "3", "4", "5", "6"};
DefaultTableModel dm = new DefaultTableModel(data, colname);
BaseTable table = new BaseTable(dm);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JList rowHeader = new JList(lm);
rowHeader.setFixedCellWidth(50);
rowHeader.setCellRenderer(new RowHeaderRenderer(table));
JScrollPane scrol1 = new JScrollPane(table);
scrol1.setRowHeaderView(rowHeader);
getContentPane().add(scrol1, BorderLayout.CENTER);
//color
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 = 0; i < colname.length; i++)
{
table.getColumn(colname[i]).setCellRenderer(tcr);
} //checkbox
for (int i = 0; i < 6; i++)
{
table.setJcheckBox(0, i);
} //combobox
String aa[] =
{
"dd", "cc", "gg"};
for (int j = 0; j < 6; j++)
{
table.setJcomboBox(3, j, aa);
}
} public static void main(String[] args)
{
RowHeaderExample rowHeaderExample1 = new RowHeaderExample();
rowHeaderExample1.show();
rowHeaderExample1.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}class RowHeaderRenderer extends JLabel implements ListCellRenderer
{
RowHeaderRenderer(JTable table)
{
JTableHeader header = table.getTableHeader();
setOpaque(true);
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
setHorizontalAlignment(CENTER);
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont()); } public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected,
boolean cellHasFocus)
{
setText( (value == null) ? "" : value.toString());
return this;
}
}class BaseTable extends JTable
{
public BaseTable()
{
super();
} public BaseTable(TableModel dm)
{
super(dm);
this.setRowHeight(20);
this.setFont(new java.awt.Font("Dialog", 0, 15));
this.getTableHeader().setFont(new java.awt.Font("Dialog", 0, 12));
this.getTableHeader().setReorderingAllowed(false); } public void setJcheckBox(int numRows, int numColumns)
{
this.getColumn(this.getModel().getColumnName(numColumns)).
setCellRenderer(
rowRenderer);
this.getColumn(this.getModel().getColumnName(numColumns)).setCellEditor(
rowEditor);
DefaultCellEditor checkBoxEditor = new DefaultCellEditor(checkBox); checkBox.setHorizontalAlignment(JLabel.CENTER);
rowEditor.setEditorAt(numRows, checkBoxEditor);
rowRenderer.add(numRows, checkBoxRenderer);
} public void setJcomboBox(int numRows, int numColumns,
String[] date)
{
JComboBox comboBox = new JComboBox(); //bu neng dong
final int row1 = numRows;
this.getColumn(this.getModel().getColumnName(numColumns)).
setCellRenderer(
rowRenderer);
this.getColumn(this.getModel().getColumnName(numColumns)).setCellEditor(
rowEditor);
DefaultCellEditor checkBoxEditor = new DefaultCellEditor(checkBox);
for (int i = 0; i < date.length; i++)
{
comboBox.addItem(date[i]);
}
DefaultCellEditor checkBoxEditor2 = new DefaultCellEditor(comboBox);
rowEditor.setEditorAt(row1, checkBoxEditor2);
}
CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer();
EachRowEditor rowEditor = new EachRowEditor(this);
EachRowRenderer rowRenderer = new EachRowRenderer();
JCheckBox checkBox = new JCheckBox();
}
把这几个类放在一个工程里 运行RowHeaderExample 就可以了
为什么表格颜色加不上?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.WindowListener;
import java.awt.event.WindowEvent;
import javax.swing.JTable;
public class RowHeaderExample extends JFrame
{
public RowHeaderExample()
{
super("aaaaaaaaa");
setSize(500, 200);
ListModel lm = new AbstractListModel()
{
String headers[] =
{
"a", "b", "c", "d", "e", "f","g","h","i","g"}; public int getSize()
{
return headers.length;
} public Object getElementAt(int index)
{
return headers[index];
}
};
Object data[][] = new Object[10][6];
String colname[] =
{
"1", "2", "3", "4", "5", "6"};
DefaultTableModel dm = new DefaultTableModel(data, colname);
BaseTable table = new BaseTable(dm);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JList rowHeader = new JList(lm);
rowHeader.setFixedCellWidth(50);
rowHeader.setCellRenderer(new RowHeaderRenderer(table));
JScrollPane scrol1 = new JScrollPane(table);
scrol1.setRowHeaderView(rowHeader);
getContentPane().add(scrol1, BorderLayout.CENTER);
//color
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 = 0; i < colname.length; i++)
{
table.getColumn(colname[i]).setCellRenderer(tcr);
} //checkbox
for (int i = 0; i < 6; i++)
{
table.setJcheckBox(0, i);
} //combobox
String aa[] =
{
"dd", "cc", "gg"};
for (int j = 0; j < 6; j++)
{
table.setJcomboBox(3, j, aa);
}
} public static void main(String[] args)
{
RowHeaderExample rowHeaderExample1 = new RowHeaderExample();
rowHeaderExample1.show();
rowHeaderExample1.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}class RowHeaderRenderer extends JLabel implements ListCellRenderer
{
RowHeaderRenderer(JTable table)
{
JTableHeader header = table.getTableHeader();
setOpaque(true);
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
setHorizontalAlignment(CENTER);
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont()); } public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected,
boolean cellHasFocus)
{
setText( (value == null) ? "" : value.toString());
return this;
}
}class BaseTable extends JTable
{
public BaseTable()
{
super();
} public BaseTable(TableModel dm)
{
super(dm);
this.setRowHeight(20);
this.setFont(new java.awt.Font("Dialog", 0, 15));
this.getTableHeader().setFont(new java.awt.Font("Dialog", 0, 12));
this.getTableHeader().setReorderingAllowed(false); } public void setJcheckBox(int numRows, int numColumns)
{
this.getColumn(this.getModel().getColumnName(numColumns)).
setCellRenderer(
rowRenderer);
this.getColumn(this.getModel().getColumnName(numColumns)).setCellEditor(
rowEditor);
DefaultCellEditor checkBoxEditor = new DefaultCellEditor(checkBox); checkBox.setHorizontalAlignment(JLabel.CENTER);
rowEditor.setEditorAt(numRows, checkBoxEditor);
rowRenderer.add(numRows, checkBoxRenderer);
} public void setJcomboBox(int numRows, int numColumns,
String[] date)
{
JComboBox comboBox = new JComboBox(); //bu neng dong
final int row1 = numRows;
this.getColumn(this.getModel().getColumnName(numColumns)).
setCellRenderer(
rowRenderer);
this.getColumn(this.getModel().getColumnName(numColumns)).setCellEditor(
rowEditor);
DefaultCellEditor checkBoxEditor = new DefaultCellEditor(checkBox);
for (int i = 0; i < date.length; i++)
{
comboBox.addItem(date[i]);
}
DefaultCellEditor checkBoxEditor2 = new DefaultCellEditor(comboBox);
rowEditor.setEditorAt(row1, checkBoxEditor2);
}
CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer();
EachRowEditor rowEditor = new EachRowEditor(this);
EachRowRenderer rowRenderer = new EachRowRenderer();
JCheckBox checkBox = new JCheckBox();
}
把这几个类放在一个工程里 运行RowHeaderExample 就可以了
为什么表格颜色加不上?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货