📄 filterablesortabletablepanel.java.svn-base
字号:
/*
* FilterableSortableTablePanel.java
*
* @author alan.dodson
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package au.id.dodson.FilterableSortableTable;
import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
/**
* @author Alan Dodson
* @version 1.0
*/
public class FilterableSortableTablePanel extends JPanel {
private JLabel filterLabel = null;
private JTextField filterField = new JTextField(20);
private JPanel filterPanel = null;
private JPanel scrollTablePanel = null;
private FilterSortTable filterTable = new FilterSortTable();
private JLabel infoLabel = new JLabel(" ");
private final static String version = "1.0";
/**
*
* @param model
*/
public FilterableSortableTablePanel(TableModel model) {
setLayout(new BorderLayout());
add(infoLabel,BorderLayout.NORTH);
add(getScrollTablePanel(),BorderLayout.CENTER);
add(getFilterPanel(),BorderLayout.SOUTH);
getTable().setTableModel(model);
}
private JPanel getScrollTablePanel() {
scrollTablePanel = new JPanel(new BorderLayout());
JScrollPane scrollPane = new JScrollPane(filterTable);
scrollTablePanel.add(scrollPane);
return scrollTablePanel;
}
private JPanel getFilterPanel() {
filterPanel = new JPanel(new BorderLayout());
filterLabel = new JLabel();
filterLabel.setText("Filter Data ");
filterField.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
setFilter(filterField.getText());
}
});
Vector vy = new Vector();
Vector vx = new Vector();
vy.add(vx);
vx.add(filterLabel);
vx.add(filterField);
filterPanel.add(GridBagUtils.layoutInGrid(vy));
return filterPanel;
}
/**
*
* @return
*/
public Vector getSelectedRow() {
int selectedRow = getTable().getSelectedRow();
if (selectedRow >=0) {
return getTable().getRow(selectedRow);
} else {
return null;
}
}
/**
*
* @param text
*/
public void setFilter(String text) {
filterField.setText(text);
filterTable.setTableFilter(filterField.getText().toString().trim());
setInfoText(filterTable.getRowCount() + " Rows Found");
}
/**
*
* @return
*/
public FilterSortTable getTable() {
return filterTable;
}
/**
*
* @param text
*/
public void setInfoText(String text) {
infoLabel.setText(text);
}
/**
*
* @param enable
*/
public void setEnabled(boolean enable) {
super.setEnabled(enable);
filterLabel.setEnabled(enable);
filterField.setEnabled(enable);
filterPanel.setEnabled(enable);
scrollTablePanel.setEnabled(enable);
filterTable.setEnabled(enable);
infoLabel.setEnabled(enable);
}
/**
*
* @param args
*/
public static void main(String args[]) {
final JFrame window = new JFrame();
Vector columnNames = new Vector();
Random rand = new Random();
Vector iv = new Vector();
for (int i = 0; i<6; i++) {
Vector jv = new Vector();
columnNames.add("Col " + i);
for (int j = 0; j<6; j++) {
String s = "Value " + rand.nextInt(10) + " " + rand.nextInt(10);
jv.add(s);
}
iv.add(jv);
}
final DefaultTableModel model = new DefaultTableModel(iv,columnNames) {
public boolean isCellEditable(int r, int c) {
return false;
}
};
final FilterableSortableTablePanel panel = new FilterableSortableTablePanel(model);
panel.getTable().addTableListener(new TableListenerInterface() {
public void setRowAccepted(Vector isAccepted) {
String text = "";
for (int i=0; i<isAccepted.size(); i++) {
text += "Column " + panel.getTable().getColumnName(i) + " " + isAccepted.get(i) + "\n";
}
JOptionPane.showMessageDialog(window, "Selected row \n" + text);
}
});
window.getContentPane().add(panel);
window.setTitle("FilterableSortableTable");
window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -