通过 JRadioButton 对 JTable 进行排序

问题描述

我想通过 JTable 组件的 JRadioButton 方法ActionListener 进行排序。当我单击“名称”时,表格将按名称排序。但是现在我点击名称单选按钮,一切都是空白。

查询数据库的主要代码一切正常。所以我在向 JScrollPane 添加一个表时遇到问题。为简单起见,我删除了所有与导入相关的代码。但是除了单选按钮的动作侦听器之外,所有代码都可以正常工作。

Jtable

public class JtableDemo extends JPanel implements ActionListener {
    private static JFrame frame;
    JTextField textField;
    JScrollPane scrollPanel;
    JRadioButton nameButton = new JRadioButton("name");
    JRadioButton departmentButton  =new JRadioButton("department");
    JRadioButton salaryButton =new JRadioButton("Salary");
    JRadioButton dateButton = new JRadioButton("date");
    ButtonGroup orderbyButtonGroup = new ButtonGroup();
    JTable jTable = new JTable();
    String orderbyname = "select * from emp where salary >6000 order by name";
    String orderbydepartment = "select * from emp where salary >6000 order by department";
    String orderbysalary = "select * from emp where salary >6000 order by salary";
    public JtableDemo() throws sqlException {
        nameButton.addActionListener(this);
        departmentButton.addActionListener(this);
        salaryButton.addActionListener(this);
        dateButton.addActionListener(this);
        orderbyButtonGroup.add(nameButton);
        orderbyButtonGroup.add(departmentButton);
        orderbyButtonGroup.add(salaryButton);
        orderbyButtonGroup.add(dateButton);

        this.add(nameButton);
        this.add(departmentButton);
        this.add(salaryButton);
        this.add(dateButton);

        String query = "select * from emp where salary>? ";
        PreparedStatement statement = Main.connection.prepareStatement(query);
        statement.setInt(1,6000);
        //statement.setString(2,"id");
        ResultSet resultSet = statement.executeQuery();
        jTable.setModel(dbutils.resultSetToTableModel(resultSet));
        jTable.setPreferredScrollableViewportSize(new Dimension(500,200));
        jTable.setFillsViewportHeight(true);
        JScrollPane scrollPane = new JScrollPane(jTable);
        add(scrollPane);
        String title = "all emp's salary less than 5600";
        this.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),title,TitledBorder.CENTER,TitledBorder.TOP));
    }

    public static void createandShowGUI() throws sqlException {
        frame = new JFrame();
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        JtableDemo newContentPane = new JtableDemo();
        newContentPane.setopaque(true);
        frame.setContentPane(newContentPane);
        frame.pack();
        frame.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==nameButton) {
            try {
                JScrollPane scrollPane = new JScrollPane(jTable);
                PreparedStatement orderbystatement = Main.connection.prepareStatement(orderbyname);
                //orderbystatement.setString(1,"name");
                ResultSet resultSet = orderbystatement.executeQuery();
                jTable.setModel(dbutils.resultSetToTableModel(resultSet));
                jTable.setPreferredScrollableViewportSize(new Dimension(500,200));
                jTable.setFillsViewportHeight(true);

            } catch (sqlException throwables) {
                throwables.printstacktrace();
            } }
        if(e.getSource()==departmentButton) { System.out.println("testdepartmentButton"); }
        if(e.getSource()==salaryButton) { System.out.println("testsalaryButton"); }
        if(e.getSource()==dateButton) { System.out.println("testdateButton"); }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)