Skip to content

Instantly share code, notes, and snippets.

@TopekoX
Last active August 29, 2015 14:04
Show Gist options
  • Save TopekoX/fb261e799205be5cebfc to your computer and use it in GitHub Desktop.
Save TopekoX/fb261e799205be5cebfc to your computer and use it in GitHub Desktop.
/**
*=========================================================
* Program ini dibuat oleh Ucup Timposu
* URL: www.timposu.com
* email : ucup.timposu@gmail.com
* Silahkan kode Java ini dipelajari / disebarkan
* secara bebas...
*==========================================================
*/
package com.timposu.tabel;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
/**
*
* @author ucup
*/
public class TableFilter extends JFrame{
private static final long serialVersionUID = 1L;
private JTextField txtFilter;
private DefaultTableModel model;
private JTable table;
private JScrollPane scrollPane;
private TableRowSorter sorter;
public TableFilter() {
super();
initComponent();
}
private void initComponent() {
txtFilter = new JTextField();
table = new JTable();
//memanggil method tablemodel
initTableModel();
//aksi TextField txtFilter
aksiTxtFilter();
scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
getContentPane().add(txtFilter, BorderLayout.NORTH);
getContentPane().add(scrollPane, BorderLayout.CENTER);
pack();
setSize(500, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* Method ini digunakan untuk mendeklarasikan
* Table Model dan Isinya
*/
private void initTableModel() {
if (model == null){
model = new DefaultTableModel();
table.setModel(model);
//memanggil Method dataModel
dataModel();
//set sorter
table.setRowSorter(getRowSorter());
}
}
/**
* Method ini digunakan untuk mendeklarasikan
* isi data Tabel Model
*/
private void dataModel() {
model.addColumn("Nama");
model.addColumn("Negara");
for (int i=0; i < 50; i++){
model.addRow(new Object[]{"Suarez","Uruguay"});
model.addRow(new Object[]{"Messi","Argentina"});
model.addRow(new Object[]{"Muller","Jerman"});
model.addRow(new Object[]{"Pirlo","Italia"});
model.addRow(new Object[]{"Agung Hercules","Indonesia"});
}
}
/**
* Method ini untuk memfilter data yang ada di dalam tabel
* method ini intinya.. :D
* @return
*/
private TableRowSorter getRowSorter() {
if (sorter == null){
sorter = new TableRowSorter(model);
}
return sorter;
}
/**
* Mendeklarasikan aksi txtFilter
*/
private void aksiTxtFilter() {
txtFilter.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
if (txtFilter.getText().length() <= 0){
getRowSorter().setRowFilter(null);
} else{
getRowSorter().setRowFilter(RowFilter.regexFilter(txtFilter.getText()));
}
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
TableFilter tableFilter = new TableFilter();
tableFilter.setVisible(true);
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment