Como eu faço para mudar o plano de fundo da ButtonColumn?

0 respostas
Thallysson

Olá, eu estava navegando esses dias na web e olhando alguns exemplos de JButtons em JTables, então eu encontrei um exemplo e modifiquei, ficou assim:

class ButtonColumn extends AbstractCellEditor
implements TableCellRenderer, TableCellEditor
{
JTable table;
JButton renderButton;
JButton editButton;
String text = "Selecionar Foto";
public ButtonColumn(JTable table, int column)
{
    super();
    this.table = table;
    renderButton = new JButton();
    editButton = new JButton();
    editButton.setFocusPainted( false );
    TableColumnModel columnModel = table.getColumnModel();
    columnModel.getColumn(column).setCellRenderer( this );
    columnModel.getColumn(column).setCellEditor( this );
}
public Component getTableCellRendererComponent(
    JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
	renderButton.setFont(new Font("Comic Sans MS",Font.BOLD,13));
    if (hasFocus)
    {
        renderButton.setForeground(table.getForeground());
        renderButton.setBackground(UIManager.getColor("Button.background"));
    }
    else if (isSelected)
    {
        renderButton.setForeground(table.getSelectionForeground());
         renderButton.setBackground(table.getSelectionBackground());
    }
    else
    {
        renderButton.setForeground(table.getForeground());
        renderButton.setBackground(UIManager.getColor("Button.background"));
    }
    renderButton.setText(text);
    return renderButton;
}
public Component getTableCellEditorComponent(
    JTable table, Object value, boolean isSelected, int row, int column)
{
    text = "Selecionar Foto";
    editButton.setFont(new Font("Comic Sans MS",Font.BOLD,13));
    editButton.setText( text );
    editButton.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e) {
           int linha = table.getSelectedRow();
           BufferedImage img = null;
           ImageIcon icon = null;
           File arquivo = null;
           try {
        	    arquivo = Login.leImagem();
	            img = ImageIO.read(arquivo);
	            icon = new ImageIcon(img);
	        } catch (IOException e1) {
	            e1.printStackTrace();
	        }
           ((Model)table.getModel()).setValueAt(icon,linha,6);
           ((Model)table.getModel()).linhas.get(0).getPessoa();
           text = arquivo.getPath();
           editButton.setText(text);
           renderButton.setText(text);
		}
    });
    return editButton;
}
public Object getCellEditorValue()
{
    return text;
}
}`

Então criando um objeto dessa classe e passando os parâmetros consegui adicionar uma coluna de botões a minha JTable, formatei e ficou assim:


Porém eu gostaria de saber como eu faço para alterar o plano de fundo desses botões? Pois já tentei alterar o plano de fundo do renderButton e do editButton e não funcionou.

Criado 23 de maio de 2016
Respostas 0
Participantes 1