Last active
August 29, 2015 14:04
-
-
Save TopekoX/fb261e799205be5cebfc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
*========================================================= | |
* Program ini dibuat oleh Ucup Timposu | |
* URL: www.timposu.com | |
* email : [email protected] | |
* 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