Minggu, 02 Januari 2011

Membuat Filter Tabel yang Tidak Membedakan Huruf Kapital / Huruf Kecil

Di bawah ini merupakan kode program untuk membuat filter tabel yang tidak membedakan huruf besar dan huruf kecil. Misalnya ketika kita ingin mencari data dengan value "Hello World" pada tabel. Kita tidak perlu memberi input dengan teks yang sama huruf besar dan kecilnya.



import java.awt.BorderLayout;
import java.util.regex.PatternSyntaxException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author hauw
*/
public class TableFilterExample extends JFrame {

private JTable tableData;
private JScrollPane scrollPane;
private JPanel panelFilter;
private JLabel labelFilter;
private JTextField textFilter;
private DefaultTableModel tableModel;
private TableRowSorter rowSorter;

public TableFilterExample() {
super("Contoh Table Filter");
tableModel = new DefaultTableModel();
tableModel.addColumn("Nama");
tableModel.addColumn("Alamat");
tableModel.addRow(new Object[]{
"Yulias Kurniawan", "Semarang"
});
tableModel.addRow(new Object[]{
"Yohannes Sudirwan", "Tangerang"
});
tableModel.addRow(new Object[]{
"Nova Setiawan", "Solo"
});
tableModel.addRow(new Object[]{
"Agung Prasetya", "Kudus"
});
tableModel.addRow(new Object[]{
"Hans Ricardo", "Jepara"
});

tableData = new JTable(tableModel);
scrollPane = new JScrollPane(tableData);
add(scrollPane, BorderLayout.CENTER);

textFilter = new JTextField();
labelFilter = new JLabel("Cari:");
panelFilter = new JPanel(new BorderLayout());
panelFilter.add(labelFilter, BorderLayout.WEST);
panelFilter.add(textFilter, BorderLayout.CENTER);
add(panelFilter, BorderLayout.NORTH);

rowSorter = new TableRowSorter(tableModel);
tableData.setRowSorter(rowSorter);

textFilter.getDocument().addDocumentListener(new DocumentListener() {

public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}

public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}

public void changedUpdate(DocumentEvent e) {
String filter = textFilter.getText();
if (filter == null) {
rowSorter.setRowFilter(RowFilter.regexFilter(null));
} else {
char[] charArray = filter.toCharArray();
String[] stringArray = new String[charArray.length];

for (int i = 0; i < stringArray.length; i++) {
stringArray[i] = "[" + Character.toUpperCase(charArray[i])
+ Character.toLowerCase(charArray[i]) + "]";
}

String regex = "";
for (String string : stringArray) {
regex += string;
}

try {
rowSorter.setRowFilter(RowFilter.regexFilter(regex));
} catch (PatternSyntaxException ex) {
ex.printStackTrace();
}
}
}
});
}

public static void main(String[] args) {
TableFilterExample app = new TableFilterExample();
app.pack();
app.setVisible(true);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Tidak ada komentar:

Posting Komentar