74 lines
2.7 KiB
Java
74 lines
2.7 KiB
Java
import javax.swing.*;
|
|
import javax.swing.table.*;
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
import java.util.regex.*;
|
|
|
|
public class FilterTable {
|
|
public static void main(String args[]) {
|
|
Runnable runner = new Runnable() {
|
|
public void run() {
|
|
JFrame frame = new JFrame("Sorting JTable");
|
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
Object rows[][] = {
|
|
{"AMZN", "Amazon", 41.28},
|
|
{"EBAY", "eBay", 41.57},
|
|
{"GOOG", "Google", 388.33},
|
|
{"MSFT", "Microsoft", 26.56},
|
|
{"NOK", "Nokia Corp", 17.13},
|
|
{"ORCL", "Oracle Corp.", 12.52},
|
|
{"SUNW", "Sun Microsystems", 3.86},
|
|
{"TWX", "Time Warner", 17.66},
|
|
{"VOD", "Vodafone Group", 26.02},
|
|
{"YHOO", "Yahoo!", 37.69}
|
|
};
|
|
Object columns[] = {"Symbol", "Name", "Price"};
|
|
TableModel model =
|
|
new DefaultTableModel(rows, columns) {
|
|
public Class getColumnClass(int column) {
|
|
Class returnValue;
|
|
if ((column >= 0) && (column < getColumnCount())) {
|
|
returnValue = getValueAt(0, column).getClass();
|
|
} else {
|
|
returnValue = Object.class;
|
|
}
|
|
return returnValue;
|
|
}
|
|
};
|
|
JTable table = new JTable(model);
|
|
final TableRowSorter<TableModel> sorter =
|
|
new TableRowSorter<TableModel>(model);
|
|
table.setRowSorter(sorter);
|
|
JScrollPane pane = new JScrollPane(table);
|
|
frame.add(pane, BorderLayout.CENTER);
|
|
JPanel panel = new JPanel(new BorderLayout());
|
|
JLabel label = new JLabel("Filter");
|
|
panel.add(label, BorderLayout.WEST);
|
|
final JTextField filterText =
|
|
new JTextField("SUN");
|
|
panel.add(filterText, BorderLayout.CENTER);
|
|
frame.add(panel, BorderLayout.NORTH);
|
|
JButton button = new JButton("Filter");
|
|
button.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
String text = filterText.getText();
|
|
if (text.length() == 0) {
|
|
sorter.setRowFilter(null);
|
|
} else {
|
|
try {
|
|
sorter.setRowFilter(
|
|
RowFilter.regexFilter(text));
|
|
} catch (PatternSyntaxException pse) {
|
|
System.err.println("Bad regex pattern");
|
|
}
|
|
}
|
|
}
|
|
});
|
|
frame.add(button, BorderLayout.SOUTH);
|
|
frame.setSize(300, 250);
|
|
frame.setVisible(true);
|
|
}
|
|
};
|
|
EventQueue.invokeLater(runner);
|
|
}
|
|
} |