Java Swing TableModel get column index by column name

Description

Java Swing TableModel get column index by column name

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

public class Main extends JPanel {
   public static void main(String[] args) {
      JFrame f = new JFrame("JTable");
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      f.add(new Main());
      f.pack();//from   w w w  .j  a  v  a2 s  . c  o m
      f.setVisible(true);
   }

   public Main() {
      TableModel dataModel = new MyTableModel();
      JTable table = new JTable(dataModel);
      
      int i = getColumnIndexFromName(dataModel, "1"); 
      System.out.println(i);

      JScrollPane jsp = new JScrollPane(table);
      this.add(jsp);
   }

   public static int getColumnIndexFromName(TableModel tableModel, String columnToRemove) {
      for (int columnIndex = 0; columnIndex < tableModel.getColumnCount(); columnIndex++) {
         if (tableModel.getColumnName(columnIndex).equals(columnToRemove)) {
            return columnIndex;
         }

      }
      return -1;

   }
}

class MyTableModel extends AbstractTableModel {

   @Override
   public int getRowCount() {
      return 30;
   }
   @Override
   public String getColumnName(int i) {
      return ""+i;
   }
   @Override
   public int getColumnCount() {
      return 3;
   }

   @Override
   public Object getValueAt(int row, int col) {
      return Math.pow(row, col + 1);
   }

   @Override
   public Class<?> getColumnClass(int col) {
      return getValueAt(0, col).getClass();
   }
}



PreviousNext

Related