我想在Jtable Java中为Cells着色吗?在图片中是这样的:
有人可以帮我谢谢!
我上次尝试的代码
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
public class Main
{
/**
* @param args
*/
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.add(new JComboxTable(), BorderLayout.NORTH);
frame.setVisible(true);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class JComboxTable extends JTable
{
public static JComboBox cb;
public JComboxTable()
{
TableModel tree = new TableModel();
TableRenderer render = new TableRenderer();
setModel(tree);
setDefaultRenderer(Object.class, render);
tree.fireTableDataChanged();
}
}
class TableModel extends AbstractTableModel
{
public int getColumnCount()
{
return 2;
}
public int getRowCount()
{
return 5;
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
if (columnIndex == 0)
{
return String.class;
}
else
{
return Color.class;
}
}
public Object getValueAt(int rowIndex, int columnIndex)
{
if (columnIndex == 0)
{
return "Salut" + rowIndex;
}
else
{
if( ( rowIndex % 2 ) == 0 )
{
return Color.RED ;
}else
{
return Color.BLUE ;
}
}
}
}
class TableRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
if (value instanceof Color)
{
setBackground((Color) value);
setText("");
}
else
{
setBackground( (Color)table.getModel().getValueAt(row, 1) );
setText( (String)value );
}
return this;
}
}
}
使用自定义渲染器。
阅读Swing教程中有关使用自定义渲染器的部分,以获取一个工作示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句