filter JTable - Java Swing

Java examples for Swing:JTable Filter

Description

filter JTable

Demo Code

/*/*  w w w. j a  v  a2  s .com*/
 * Zettelkasten - nach Luhmann
 ** Copyright (C) 2001-2014 by Daniel L?decke (http://www.danielluedecke.de)
 * 
 * Homepage: http://zettelkasten.danielluedecke.de
 * 
 * 
 * This program is free software; you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation; either version 3 of 
 * the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with this program;
 * if not, see <http://www.gnu.org/licenses/>.
 * 
 * 
 * Dieses Programm ist freie Software. Sie k?nnen es unter den Bedingungen der GNU
 * General Public License, wie von der Free Software Foundation ver?ffentlicht, weitergeben
 * und/oder modifizieren, entweder gem?? Version 3 der Lizenz oder (wenn Sie m?chten)
 * jeder sp?teren Version.
 * 
 * Die Ver?ffentlichung dieses Programms erfolgt in der Hoffnung, da? es Ihnen von Nutzen sein 
 * wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder 
 * der VERWENDBARKEIT F?R EINEN BESTIMMTEN ZWECK. Details finden Sie in der 
 * GNU General Public License.
 * 
 * Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm 
 * erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>.
 */
//package com.java2s;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Main {
    public static void filterTable(JTable table, DefaultTableModel dtm,
            String text, int[] columns, boolean forceRegEx) {
        if (null == table || null == dtm || null == text || text.isEmpty()
                || null == columns || columns.length < 1) {
            return;
        }
        if (!forceRegEx) {
            text = text.toLowerCase();
        }
        for (int cnt = table.getRowCount() - 1; cnt >= 0; cnt--) {
            int rowindex = table.convertRowIndexToModel(cnt);
            String value = "";
            for (int ci = 0; ci < columns.length; ci++) {
                value = value
                        + dtm.getValueAt(rowindex, columns[ci]).toString()
                                .toLowerCase() + " ";
            }
            value = value.trim();
            if (forceRegEx) {
                try {
                    Pattern pattern = Pattern.compile(text);
                    Matcher matcher = pattern.matcher(value);
                    if (!matcher.find()) {
                        dtm.removeRow(rowindex);
                    }
                } catch (PatternSyntaxException ex) {
                    if (!value.contains(text)) {
                        dtm.removeRow(rowindex);
                    }
                }
            } else if (text.contains("?")) {
                try {
                    String dummy = text.replace("?", ".");
                    dummy = dummy.replace("\\.", "\\?").toLowerCase();
                    Pattern pattern = Pattern.compile(dummy);
                    Matcher matcher = pattern.matcher(value);
                    if (!matcher.find()) {
                        dtm.removeRow(rowindex);
                    }
                } catch (PatternSyntaxException ex) {
                    if (!value.contains(text)) {
                        dtm.removeRow(rowindex);
                    }
                }
            } else if (!value.contains(text)) {
                dtm.removeRow(rowindex);
            }
        }
    }
}

Related Tutorials