Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: Classes e Componentes ::: JTable

Excluir uma coluna de uma JTable em tempo de execução

Quantidade de visualizações: 9890 vezes
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;

public class Estudos extends JFrame{
  public Estudos(){
    super("Exemplo de uma tabela simples");
		
    final DefaultTableModel modelo = new MyDefaultTableModel();
    
    // constrói a tabela
    final JTable tabela = new JTable(modelo);
    tabela.setAutoCreateColumnsFromModel(false);
    
    // Cria duas colunas
    modelo.addColumn("Nome");
    modelo.addColumn("Idade");
    
    JButton btn = new JButton("Inserir Colunas");
    btn.addActionListener(
      new ActionListener(){
      	public void actionPerformed(ActionEvent e){
      	  String titulo = JOptionPane.showInputDialog(null, 
      	     "Informe o título para a nova coluna:");
      	  int pos = Integer.parseInt(JOptionPane.showInputDialog(null, 
      	                "Informe a posição da nova coluna:"));
      	  
      	  // testa se a posição é válida
      	  if(pos > (modelo.getColumnCount() - 1))
      	    pos = 0;
      	  
      	  // Insere uma coluna na posição especificada
          insertColumn(tabela, titulo, null, pos);
        }
      }	
    );
    
    JButton btn2 = new JButton("Excluir Colunas");
    btn2.addActionListener(
      new ActionListener(){
      	public void actionPerformed(ActionEvent e){
      	  int pos = Integer.parseInt(JOptionPane.showInputDialog(null, 
      	                "Informe a posição da coluna a ser excluída:"));
      	  
      	  // testa se a posição é válida
      	  if(pos < modelo.getColumnCount())
      	    // remove a coluna na posição especificada
            removeColumnAndData(tabela, pos);
        }
      }	
    );  
    
    tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));
	
    Container c = getContentPane();
    c.setLayout(new FlowLayout());
			
    JScrollPane scrollPane = new JScrollPane(tabela);
    c.add(scrollPane);
    c.add(btn);
    c.add(btn2);
    	
    setSize(400, 300);
    setVisible(true);
  }
  
  public void betterAddColumn(JTable table, Object headerLabel,
                                Object[] values) {
    DefaultTableModel model = (DefaultTableModel)table.getModel();
    TableColumn col = new TableColumn(model.getColumnCount());
    
    if(table.getAutoCreateColumnsFromModel()) {
      throw new IllegalStateException();
    }
    col.setHeaderValue(headerLabel);
    table.addColumn(col);
    model.addColumn(headerLabel.toString(), values);
  }
  
  public void insertColumn(JTable table, Object headerLabel,
                             Object[] values, int vColIndex){
    betterAddColumn(table, headerLabel, values);
    table.moveColumn(table.getColumnCount()-1, vColIndex);
  }
  
  public void removeColumnAndData(JTable table, int vColIndex) {
    MyDefaultTableModel model = (MyDefaultTableModel)table.getModel();
    TableColumn col = table.getColumnModel().getColumn(vColIndex);
    int columnModelIndex = col.getModelIndex();
    Vector data = model.getDataVector();
    Vector colIds = model.getColumnIdentifiers();
    
    table.removeColumn(col);
    
    colIds.removeElementAt(columnModelIndex);
    
    for (int r=0; r<data.size(); r++) {
      Vector row = (Vector)data.get(r);
      row.removeElementAt(columnModelIndex);
    }
    model.setDataVector(data, colIds);
    
    Enumeration enume = table.getColumnModel().getColumns();
    for (; enume.hasMoreElements(); ) {
      TableColumn c = (TableColumn)enume.nextElement();
      if (c.getModelIndex() >= columnModelIndex) {
        c.setModelIndex(c.getModelIndex()-1);
      }
    }
    model.fireTableStructureChanged();
  }
	
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

class MyDefaultTableModel extends DefaultTableModel {
  public Vector getColumnIdentifiers() {
    return columnIdentifiers;
  }
}


Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 24 usuários muito felizes estudando em nosso site.