qq_20946905 2017-03-26 09:00 采纳率: 0%
浏览 3771

defaulttablemodel 刷新数据库里的数据

如下图,我页面上有一个刷新按钮,想通过那个按钮在按钮监听事件中,获取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;
    }
}
  • 写回答

1条回答 默认 最新

  • sinat_25333235 2017-03-26 11:44
    关注

    f12打开浏览器调试模式,看有没有报错。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!