Problema com barra de rolagem Horizantal em uma JTable [RESOLVIDO]

2 respostas
brunorota

Olá galera

Estou com o serguinte problema, eu tenho uma coluna NOME na JTable só que tem alguns nomes que ultrapassam o limite da coluna e fica "..." no final

Eu pesquisei e encontrei uma solução assim

public JTable getTableComponente(){
		
		tableComponente = new JTable(new ComponenteDB().dadosComponentes(), this.getCabecalho());
		this.defineRenderersComponente();
		tableComponente.addMouseListener(this);
		tableComponente.setDoubleBuffered(false);
		tableComponente.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		
		return tableComponente;
	}

        public JScrollPane getJspComponente(){
		
		if(jspComponente == null){
			
			jspComponente = new JScrollPane();
			jspComponente.setBounds(10, 120, 300, 230);
			jspComponente.addMouseListener(this);
			jspComponente.setViewportView(this.getTableComponente());
			jspComponente.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
		}
		
		return jspComponente;
	}

        private void defineRenderersComponente() {  
		 
	     DefaultTableCellRenderer rendererCentro = new DefaultTableCellRenderer();  
	     rendererCentro.setHorizontalAlignment(SwingConstants.CENTER);  
	     DefaultTableCellRenderer rendererDireita = new DefaultTableCellRenderer();  
	     rendererDireita.setHorizontalAlignment(SwingConstants.RIGHT);  
	     DefaultTableCellRenderer rendererEsquerda = new DefaultTableCellRenderer();  
	     rendererEsquerda.setHorizontalAlignment(SwingConstants.LEFT);  
	   
	     JTableHeader header = tableComponente.getTableHeader();  
	     header.setPreferredSize(new Dimension(0, 25));   
	     
	     TableColumnModel modeloDaColuna = tableComponente.getColumnModel();  
	       
	     modeloDaColuna.getColumn(0).setCellRenderer(rendererEsquerda);  
	     modeloDaColuna.getColumn(1).setCellRenderer(rendererEsquerda);   
	   
	     modeloDaColuna.getColumn(0).setMaxWidth(60);  
	     modeloDaColuna.getColumn(1).setMaxWidth(700);  
	 }

Certo eu adiciona a barra de rolagem ela funciona, SÓ que tem um porém

Com essa linha de comando
tableComponente.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

As coluna código e nome ficam bem pequenas, não ficam do tamanho do jScrolPane, então eu preciso arrastar a coluna pra ela aumentar ae sim aparece a barra de rolagem horizontal

Eu preciso do seguinte, eu definir um tamanho pra coluna nome, maior, que ultrapasse o tamanho do JScrolPane e quando a coluna ultrapassar o tamanho aparecer a barra de rolagem horizontal

Se alguém puder ajudar, ficarei grato ^^

Atenciosamente

2 Respostas

S

Olá amigo

tenta isso:

jTable.setModel(aModel);             
           jTable.setFillsViewportHeight(true);
           jTable.getTableHeader().setReorderingAllowed(false);
           jTable.getColumnModel().getColumn(0).setWidth(0);
           jTable.getColumnModel().getColumn(0).setPreferredWidth(0);
        
           jTable.getColumnModel().getColumn(1).setPreferredWidth(50);
           jTable.getColumnModel().getColumn(2).setPreferredWidth(300);      
           jTable.getColumnModel().getColumn(3).setPreferredWidth(100);

espero que ajude

Silvio Guedes

brunorota

Olá Silvio

Deu certo sim ^^

Muito obrigado pela ajuda

Att

Criado 21 de outubro de 2009
Ultima resposta 22 de out. de 2009
Respostas 2
Participantes 2