public class TableProcessRender implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { return pbar; } }
/** * This method initializes jProgressBar * * @return javax.swing.JProgressBar */ private JProgressBar getJProgressBar() { if (jProgressBar == null) { jProgressBar = new JProgressBar(); } return jProgressBar; } public static void main(String[] args) { new MainFrame(); }}
然后table.setDefaultRenderer()设置绘制器
给你一个很简单的例子package csdn;import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;//实现TableCellRenderer,绘制JButton
class JTableButtonRenderer extends JButton implements TableCellRenderer {
private TableCellRenderer defaultRenderer;public JTableButtonRenderer(TableCellRenderer renderer) {
defaultRenderer = renderer;
}public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected,
boolean hasFocus,
int row, int column)
{
if (isSelected) {
this.setBorder(BorderFactory.createLineBorder(Color.BLUE));
}
else {
this.setBorder(null);
}
return this;
}
}class JTableButtonModel extends AbstractTableModel {
private Object[][] rows = {{new JButton("test")}};
private String[] columns = {"test"};public String getColumnName(int column) {
return columns[column];
}public int getRowCount() {
return rows.length;
}public int getColumnCount() {
return columns.length;
}public Object getValueAt(int row, int column) {
return rows[row][column];
}public boolean isCellEditable(int row, int column) {
return false;
}public Class getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
}
public final class TableTest extends JFrame {
private JTable table;public TableTest() {
TableCellRenderer defaultRenderer;table = new JTable(new JTableButtonModel());
defaultRenderer = table.getDefaultRenderer(JButton.class);
table.setDefaultRenderer(JButton.class, new JTableButtonRenderer(defaultRenderer)); //设置绘制器
table.setPreferredScrollableViewportSize(new Dimension(400, 200));
this.setContentPane(table);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 300);
}public static void main(String[] args) {
JFrame frame = new TableTest();
frame.setVisible(true);
}
}
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;public class MainFrame extends JFrame { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JScrollPane jScrollPane = null; private JTable jTable = null;
private JProgressBar pbar; private JProgressBar jProgressBar = null; /**
* This is the default constructor
*/
public MainFrame() {
super();
pbar = new JProgressBar();
initialize();
setVisible(true);
} /**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(489, 253);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
} /**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJScrollPane(), BorderLayout.CENTER);
jContentPane.add(getJButton(), BorderLayout.SOUTH);
jContentPane.add(getJProgressBar(), BorderLayout.NORTH);
}
return jContentPane;
} private JButton getJButton()
{
JButton button = new JButton("Click");
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
pbar.setValue(pbar.getValue()+2);
jProgressBar.setValue(pbar.getValue()+2);
jTable.setValueAt("", 0, 0);
}
});
return button;
} /**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setViewportView(getJTable());
}
return jScrollPane;
} /**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable() {
if (jTable == null) {
jTable = new JTable(new String[][]{{"A","B"},{"C","D"}},new String[]{"E","F"});
jTable.getColumnModel().getColumn(0).setCellRenderer(new TableProcessRender());
}
return jTable;
}
public class TableProcessRender implements TableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
return pbar;
}
}
/**
* This method initializes jProgressBar
*
* @return javax.swing.JProgressBar
*/
private JProgressBar getJProgressBar() {
if (jProgressBar == null) {
jProgressBar = new JProgressBar();
}
return jProgressBar;
} public static void main(String[] args)
{
new MainFrame();
}}
Constructor MainFrame() --> initialize() --> getJContentPane() --> getXX()