如下图,我页面上有一个刷新按钮,想通过那个按钮在按钮监听事件中,获取result值然后直接刷新列表。现在按钮点了没反应,不知道哪里出了问题
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowSorter;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.springframework.jdbc.core.RowCallbackHandler;
import com.tlxx.dao.MaterialDao;
import com.tlxx.model.MaterialList;
import com.tlxx.util.DbUtil;
import com.tlxx.util.StringUtil;
public class MaterialsFrm extends javax.swing.JInternalFrame {
MaterialDao materialDao = new MaterialDao();
DbUtil dbUtil = new DbUtil();
private JTable Table;
String[] COLUMN = { "物料编号", "物料名称", "规格", "包装规格", "产地", "计量单位", "库存", "单价" };// 表格的列
private Object[][] result;
private DefaultTableModel model;// 声明定义表格的模型
private JTextField ItmNameTxt;
private JTextField ItmIdTxt;
/**
* Create the frame.
*/
public MaterialsFrm() {
setClosable(true);
setIconifiable(true);
setFrameIcon(null);
this.setLocation(0, 0);
setTitle("\u836F\u6750\u5217\u8868");
initComponents();
getContentPane().setLayout(null);
}
// 搜索框检索查询
private void searchActionPerformed(ActionEvent evt) {
String itmName = this.ItmNameTxt.getText();
String itmId = this.ItmIdTxt.getText();
if (StringUtil.isEmpty(itmName) && StringUtil.isEmpty(itmId)) {
JOptionPane.showMessageDialog(null,
"<html> <font face= '宋体 ' size= '5'> <b>物料名称或编号不能为空!</b> </font> </html> ");
return;
}
MaterialList matlist = new MaterialList(itmId, itmName);
try {
result = getFileStates(materialDao.search(dbUtil.getCon(), matlist));
if (result.length == 0) {
JOptionPane.showMessageDialog(null,
"<html> <font face= '宋体 ' size= '5'> <b>不存在该物料,请重新输入!</b> </font> </html>");
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showConfirmDialog(null,
"<html> <font face= '宋体 ' size= '5'> <b>查询异常,请重试或联系管理员!</b> </font> </html>");
}
}
// 刷新物料按钮
private void refreshActionPerformed(ActionEvent evt) {
try {
result = getFileStates(materialDao.selectMaterial(dbUtil.getCon()));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
model = new DefaultTableModel(result, COLUMN);
Table = new JTable();
Table.setModel(model);
}
private void initComponents() {
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(30, 150, 1300, 538);
getContentPane().add(scrollPane);
Table = new JTable();
scrollPane.setColumnHeaderView(Table);
try {
result = getFileStates(materialDao.selectMaterial(dbUtil.getCon()));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JButton searchButton = new JButton("搜索");
searchButton.setBounds(610, 27, 123, 33);
getContentPane().add(searchButton);
searchButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
searchActionPerformed(evt);
}
});
JLabel label_ItemName = new JLabel("物料名称");
label_ItemName.setFont(new Font("宋体", Font.PLAIN, 20));
label_ItemName.setBounds(30, 31, 81, 33);
getContentPane().add(label_ItemName);
ItmNameTxt = new JTextField();
ItmNameTxt.setBounds(140, 28, 96, 33);
getContentPane().add(ItmNameTxt);
ItmNameTxt.setColumns(10);
JLabel label_ItmID = new JLabel("物料编号");
label_ItmID.setFont(new Font("宋体", Font.PLAIN, 20));
label_ItmID.setBounds(297, 31, 81, 33);
getContentPane().add(label_ItmID);
ItmIdTxt = new JTextField();
ItmIdTxt.setBounds(406, 28, 96, 33);
getContentPane().add(ItmIdTxt);
ItmIdTxt.setColumns(10);
JButton refreshButton = new JButton("刷新物料");
refreshButton.setBounds(30, 106, 123, 29);
getContentPane().add(refreshButton);
refreshButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
refreshActionPerformed(evt);
}
});
// 数字字段需要按照数值类型排序,而不是字符串类型排序。需覆盖DefaultTableModel的getColumnClass方法进行数值排序
model = new DefaultTableModel(result, COLUMN) {
public Class getColumnClass(int column) {
Class returnValue;
if ((column >= 0) && (column < getColumnCount())) {
returnValue = getValueAt(0, column).getClass();
} else {
returnValue = Object.class;
}
return returnValue;
}
};
Table = new JTable() {
//表格不允许被编辑
public boolean isCellEditable(int row, int column) {
return false;
}
};
Table.setModel(model);
// RowSorter方法进行表格内排序
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
Table.setRowSorter(sorter);
// Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // 设置表格大小改变自动变化模型
Table.setGridColor(Color.black);// 设置表格中网格线颜色
Table.setFont(new Font("宋体", Font.BOLD, 20));// 设置字体
DefaultTableCellRenderer cr = new DefaultTableCellRenderer();// 设置单元格居中显示
cr.setHorizontalAlignment(SwingConstants.CENTER);
Table.setDefaultRenderer(Object.class, cr);
JTableHeader tableHeader = Table.getTableHeader();
tableHeader.setReorderingAllowed(false);// 设置表格列不可移动
scrollPane.setViewportView(Table);
pack();
}
/**
* @param args
* the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try {
/*
* 更改皮肤,点击substance.jar -> 找到org.jvnet.substance.skin这个包 ->
* 将下面的SubstanceDustCoffeeLookAndFeel 替换成
* 刚刚打开的包下的任意一个“Substance....LookAndFeel”即可
*/
UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceCremeCoffeeLookAndFeel());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new MaterialsFrm().setVisible(true);
}
});
}
private Object[][] getFileStates(List list) { // 获取二维数组的方法
Object[][] types = new Object[list.size()][8];
for (int i = 0; i < list.size(); i++) {
MaterialList type = (MaterialList) list.get(i);
types[i][0] = type.getItmID();
types[i][1] = type.getItmName();
types[i][2] = type.getItmSpec();
types[i][3] = type.getPackSpec();
types[i][4] = type.getPlace();
types[i][5] = type.getPrice();
types[i][6] = type.getStock();
types[i][7] = type.getUnit();
}
return types;
}
}