TableHeader

8 respostas
paulohbmetal

Galera é o seguinte: quero deixar (tambem) selecionado a célula TableHeader quando selecionar uma(s) celula(s).Como no Excel do Office 2003 em diante.Alguém já fez isso?!

A Paz!!

8 Respostas

brlima

Ja tentou colocar um evento de mudança de coluna, dai pegar o header e trocar a borda dele?? Acho q nao deve ser mto complicado…

Abraços!

paulohbmetal

Já…Já criei até um renderer mais a nhaca não funcionou.:frowning: Ele tem que estar interagido coluna selecionada do JTable. Estranho não?!

A Paz!!

brlima

Esse codigo aqui funcionou pra mudar o titulo… So nao to conseguindo dar o refresh no header… pq, altero, soh q ele so muda qdo eu mexo no tamanho da coluna… to tentando achar como parar isso…

jtable.getColumnModel().getSelectionModel().addListSelectionListener(
		new ListSelectionListener(){
			public void valueChanged(ListSelectionEvent e) {
				// muda a cor da coluna
				System.out.println("Coluna " + getTabela().getSelectedColumn());
				TableColumn coluna = getTabela().getColumnModel().getColumn(getTabela().getSelectedColumn());
				coluna.setHeaderValue("{"+ coluna.getHeaderValue() +"}");
				System.out.println("Coluna " + coluna.getHeaderValue());
				getTabela().doLayout();
				getScrollTabela().doLayout();
			}
		});

ve-se te ajuda em alguma coisa

brlima

Dei uma arrumada no codigo aqui.
Precisava dar repaint no formuladio pra aparecer as atualizações…

Agora he com vc… criar seu proprio renderer pra alterar a cor de fundo outra coisa… :smiley:

jtable.getColumnModel().getSelectionModel().addListSelectionListener(
		new ListSelectionListener(){
			public void valueChanged(ListSelectionEvent e) {
				if(e.getValueIsAdjusting()) return;
				System.out.println("Coluna " + getTabela().getSelectedColumn());
				TableColumn coluna = getTabela().getColumnModel().getColumn(getTabela().getSelectedColumn());
				coluna.setHeaderValue("{"+ coluna.getHeaderValue() +"}");
				System.out.println("Coluna " + coluna.getHeaderValue());
				MyJTableViewer.this.repaint();
			}
		});
paulohbmetal

Isso eu já fiz…Mas tudo bem, vou lutando uma hora ele cede… :lol:
Mas, valeu!!Assim que eu conseguir, coloco aqui.

A Paz!!

brlima

Eita, num entendi o pq nao funciona entao… se vc consegue acessar tudo certinho…rssss :roll:

mas blz… Flw!

paulohbmetal

Aêêêê....Consegui...Taí ...

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;


public class TableExemplo extends JFrame{
	JTable tabela=null;
	JScrollPane scroll=null;	
	
	public TableExemplo(){			
		setBounds(0,0,300,300);				
		setTitle("Aêêêê..");
		setResizable(false);

		scroll = new JScrollPane();
		scroll.setBounds(0,0,200,200);
		
		tabela = new JTable();
		
		tabela.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Coluna 1", "Coluna 2", "Coluna 3", "Coluna 4"
            }
        ));
        tabela.getTableHeader().setDefaultRenderer(new ColumnHeaderRenderer());
        tabela.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {                
                tabela.getTableHeader().repaint();                                               
                tabela.repaint();
            }                      
        });
                        
        tabela.addKeyListener(new java.awt.event.KeyAdapter() {           
            public void keyReleased(java.awt.event.KeyEvent evt) {
                if(evt.getKeyCode()==evt.VK_RIGHT 
                || evt.getKeyCode()==evt.VK_LEFT
                || evt.getKeyCode()==evt.VK_UP
                || evt.getKeyCode()==evt.VK_DOWN){
                    tabela.getTableHeader().repaint();
                    tabela.repaint();
                }
            }           
        });
        
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                System.exit(0);
            }
        });
        
        scroll.setViewportView(tabela);
        getContentPane().add(scroll, java.awt.BorderLayout.CENTER);
	}
	
	public static void main(String args[]){
		TableExemplo tabelaexemplo = new TableExemplo();
		tabelaexemplo.show(true);		
	}	
}


class ColumnHeaderRenderer extends JLabel implements TableCellRenderer {    
       
    public ColumnHeaderRenderer() {        
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));
        setHorizontalAlignment(JLabel.CENTER);
        setOpaque(true);        
    }
    
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {        
        if(table.getSelectedColumn()==column){                        
            setBackground(table.getSelectionBackground());
        }else{            
            setBackground(table.getTableHeader().getBackground());  
        }
                
        table.getTableHeader().repaint();        
        setText(value.toString());
        return this;
    }    
}

A Paz!!

R
paulohbmetal:
Aêêêê....Consegui...Taí ...
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;


public class TableExemplo extends JFrame{
	JTable tabela=null;
	JScrollPane scroll=null;	
	
	public TableExemplo(){			
		setBounds(0,0,300,300);				
		setTitle("Aêêêê..");
		setResizable(false);

		scroll = new JScrollPane();
		scroll.setBounds(0,0,200,200);
		
		tabela = new JTable();
		
		tabela.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Coluna 1", "Coluna 2", "Coluna 3", "Coluna 4"
            }
        ));
        tabela.getTableHeader().setDefaultRenderer(new ColumnHeaderRenderer());
        tabela.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {                
                tabela.getTableHeader().repaint();                                               
                tabela.repaint();
            }                      
        });
                        
        tabela.addKeyListener(new java.awt.event.KeyAdapter() {           
            public void keyReleased(java.awt.event.KeyEvent evt) {
                if(evt.getKeyCode()==evt.VK_RIGHT 
                || evt.getKeyCode()==evt.VK_LEFT
                || evt.getKeyCode()==evt.VK_UP
                || evt.getKeyCode()==evt.VK_DOWN){
                    tabela.getTableHeader().repaint();
                    tabela.repaint();
                }
            }           
        });
        
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                System.exit(0);
            }
        });
        
        scroll.setViewportView(tabela);
        getContentPane().add(scroll, java.awt.BorderLayout.CENTER);
	}
	
	public static void main(String args[]){
		TableExemplo tabelaexemplo = new TableExemplo();
		tabelaexemplo.show(true);		
	}	
}


class ColumnHeaderRenderer extends JLabel implements TableCellRenderer {    
       
    public ColumnHeaderRenderer() {        
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));
        setHorizontalAlignment(JLabel.CENTER);
        setOpaque(true);        
    }
    
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {        
        if(table.getSelectedColumn()==column){                        
            setBackground(table.getSelectionBackground());
        }else{            
            setBackground(table.getTableHeader().getBackground());  
        }
                
        table.getTableHeader().repaint();        
        setText(value.toString());
        return this;
    }    
}

A Paz!!

Criado 27 de maio de 2004
Ultima resposta 10 de ago. de 2010
Respostas 8
Participantes 3