使用SQLite数据库中的字段填充JComboBox

时间:2017-12-26 15:34:15

标签: java database sqlite combobox populate

我正在尝试从SQLite数据库中获取一个组合框。我的代码如下......

public void fillYearGroup() {
        try {
            String query="select * from YearGroups";
            PreparedStatement pst=connection.prepareStatement(query);
            ResultSet rs=pst.executeQuery();

            while(rs.next())
            {
                cmbYearGroup.addItem(rs.getString("YearGroup"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我在这里添加了调用语句:

cmbYearGroup = new JComboBox();
cmbYearGroup.setFont(new Font("Tahoma", Font.PLAIN, 12));
cmbYearGroup.setBounds(171, 44, 57, 27);
contentPane.add(cmbYearGroup);
fillYearGroup();

虽然我没有收到任何错误,但预览中的组合框显示为空。任何人都可以在这里暗示我做错了吗?控制台说的如下:

java.lang.NullPointerException
    at Administrator.fillYearGroup(Administrator.java:71)
    at Administrator.<init>(Administrator.java:279)
    at Administrator$1.run(Administrator.java:55)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

完整代码

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import net.proteanit.sql.DbUtils;

import javax.swing.JScrollPane;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import javax.swing.JCheckBox;
import javax.swing.JButton;
import java.awt.Component;
import javax.swing.Box;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.awt.event.ActionEvent;
import javax.swing.JTable;

public class Administrator extends JFrame {
    Connection connection=null; 
    private JPanel contentPane;
    private JTextField txtAForename;
    private JTextField txtASurname;
    private JTextField txtAYearGroup;
    private JTextField txtAAssessment;
    private JTextField txtAPracticalSet;
    private JTextField txtARegSet;
    private JTextField txtALastUpdated;
    private JTextField txtAMedical;
    private JTextField txtABehaviour;
    private JTextField txtABarriers;
    private JTextField txtAStrategies;
    private JTextField txtALastUpdate;
    private JTextField txtSForename;
    private JTextField txtSSurname;
    private JTable table;
    private JComboBox cmbYearGroup;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Administrator frame = new Administrator();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */

    public void fillYearGroup() {
        try {
            String query="select * from YearGroups";
            System.out.println(connection);
            PreparedStatement pst=connection.prepareStatement(query);
            ResultSet rs=pst.executeQuery();

            while(rs.next())
            {
                cmbYearGroup.addItem(rs.getString("YearGroup"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void refreshTable() {

        try {
            String query="select Forename, Surname, Behaviour, Medical, Barriers, Strategies, Assessment from S1Pupils";
            PreparedStatement pst=connection.prepareStatement(query);
            ResultSet rs=pst.executeQuery();
            table.setModel(DbUtils.resultSetToTableModel(rs));
        } catch(Exception e){
            e.printStackTrace();
        }
    }


    public Administrator() {
        Connection connection = sqliteConnection.dbConnector();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 850, 676);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        txtAForename = new JTextField();
        txtAForename.setFont(new Font("Tahoma", Font.PLAIN, 12));
        txtAForename.setColumns(10);
        txtAForename.setBounds(10, 299, 129, 27);
        contentPane.add(txtAForename);

        txtASurname = new JTextField();
        txtASurname.setFont(new Font("Tahoma", Font.PLAIN, 12));
        txtASurname.setColumns(10);
        txtASurname.setBounds(149, 299, 129, 27);
        contentPane.add(txtASurname);

        txtAYearGroup = new JTextField();
        txtAYearGroup.setColumns(10);
        txtAYearGroup.setBounds(288, 300, 74, 27);
        contentPane.add(txtAYearGroup);

        txtAAssessment = new JTextField();
        txtAAssessment.setColumns(10);
        txtAAssessment.setBounds(372, 300, 74, 27);
        contentPane.add(txtAAssessment);

        JLabel lblAssessment = new JLabel("Assesment");
        lblAssessment.setHorizontalAlignment(SwingConstants.LEFT);
        lblAssessment.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblAssessment.setBounds(372, 280, 86, 14);
        contentPane.add(lblAssessment);

        JLabel lblYearGroup = new JLabel("Year Group");
        lblYearGroup.setHorizontalAlignment(SwingConstants.LEFT);
        lblYearGroup.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblYearGroup.setBounds(288, 280, 74, 14);
        contentPane.add(lblYearGroup);

        JLabel lblForename = new JLabel("Forename");
        lblForename.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblForename.setBounds(10, 279, 74, 14);
        contentPane.add(lblForename);

        JLabel lblSurname = new JLabel("Surname");
        lblSurname.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblSurname.setBounds(149, 279, 74, 14);
        contentPane.add(lblSurname);

        JCheckBox chcALaac = new JCheckBox("LAAC");
        chcALaac.setFont(new Font("Tahoma", Font.BOLD, 12));
        chcALaac.setBounds(720, 272, 86, 23);
        contentPane.add(chcALaac);

        JCheckBox chcAArmyChild = new JCheckBox("Army child");
        chcAArmyChild.setFont(new Font("Tahoma", Font.BOLD, 12));
        chcAArmyChild.setBounds(720, 298, 90, 23);
        contentPane.add(chcAArmyChild);

        JCheckBox chcAYoungCarer = new JCheckBox("Y - carer");
        chcAYoungCarer.setFont(new Font("Tahoma", Font.BOLD, 12));
        chcAYoungCarer.setBounds(720, 324, 86, 23);
        contentPane.add(chcAYoungCarer);

        txtAPracticalSet = new JTextField();
        txtAPracticalSet.setColumns(10);
        txtAPracticalSet.setBounds(452, 299, 80, 27);
        contentPane.add(txtAPracticalSet);

        txtARegSet = new JTextField();
        txtARegSet.setColumns(10);
        txtARegSet.setBounds(542, 299, 80, 27);
        contentPane.add(txtARegSet);

        txtALastUpdated = new JTextField();
        txtALastUpdated.setColumns(10);
        txtALastUpdated.setBounds(632, 300, 86, 27);
        contentPane.add(txtALastUpdated);

        JLabel lblPracticalSet = new JLabel("Practical Set");
        lblPracticalSet.setHorizontalAlignment(SwingConstants.LEFT);
        lblPracticalSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblPracticalSet.setBounds(454, 279, 90, 14);
        contentPane.add(lblPracticalSet);

        JLabel lblRegSet = new JLabel("Reg Set");
        lblRegSet.setHorizontalAlignment(SwingConstants.LEFT);
        lblRegSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblRegSet.setBounds(542, 279, 80, 14);
        contentPane.add(lblRegSet);

        JLabel lblLastUpdated = new JLabel("Last Updated");
        lblLastUpdated.setHorizontalAlignment(SwingConstants.LEFT);
        lblLastUpdated.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblLastUpdated.setBounds(628, 278, 84, 17);
        contentPane.add(lblLastUpdated);

        txtAMedical = new JTextField();
        txtAMedical.setColumns(10);
        txtAMedical.setBounds(137, 355, 687, 27);
        contentPane.add(txtAMedical);

        txtABehaviour = new JTextField();
        txtABehaviour.setColumns(10);
        txtABehaviour.setBounds(137, 393, 687, 27);
        contentPane.add(txtABehaviour);

        txtABarriers = new JTextField();
        txtABarriers.setColumns(10);
        txtABarriers.setBounds(137, 431, 687, 44);
        contentPane.add(txtABarriers);

        txtAStrategies = new JTextField();
        txtAStrategies.setColumns(10);
        txtAStrategies.setBounds(137, 489, 687, 44);
        contentPane.add(txtAStrategies);

        txtALastUpdate = new JTextField();
        txtALastUpdate.setColumns(10);
        txtALastUpdate.setBounds(137, 548, 687, 44);
        contentPane.add(txtALastUpdate);

        JLabel lblMedical = new JLabel("Medical");
        lblMedical.setVerticalAlignment(SwingConstants.BOTTOM);
        lblMedical.setHorizontalAlignment(SwingConstants.RIGHT);
        lblMedical.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblMedical.setBounds(31, 361, 98, 14);
        contentPane.add(lblMedical);

        JLabel lblBehaviour = new JLabel("Behaviour");
        lblBehaviour.setHorizontalAlignment(SwingConstants.RIGHT);
        lblBehaviour.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblBehaviour.setBounds(29, 398, 100, 14);
        contentPane.add(lblBehaviour);

        JLabel lblBarriers = new JLabel("Barriers to learning");
        lblBarriers.setHorizontalAlignment(SwingConstants.RIGHT);
        lblBarriers.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblBarriers.setBounds(10, 441, 119, 23);
        contentPane.add(lblBarriers);

        JLabel lblStrategies = new JLabel("Strategies");
        lblStrategies.setHorizontalAlignment(SwingConstants.RIGHT);
        lblStrategies.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblStrategies.setBounds(31, 499, 100, 23);
        contentPane.add(lblStrategies);

        JLabel lblLastUpdate = new JLabel("Last update");
        lblLastUpdate.setHorizontalAlignment(SwingConstants.RIGHT);
        lblLastUpdate.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblLastUpdate.setBounds(31, 558, 98, 23);
        contentPane.add(lblLastUpdate);

        JButton btnSave = new JButton("Save record");
        btnSave.setFont(new Font("Tahoma", Font.BOLD, 12));
        btnSave.setBounds(705, 603, 119, 23);
        contentPane.add(btnSave);

        txtSForename = new JTextField();
        txtSForename.setFont(new Font("Tahoma", Font.PLAIN, 12));
        txtSForename.setColumns(10);
        txtSForename.setBounds(10, 44, 129, 27);
        contentPane.add(txtSForename);

        txtSSurname = new JTextField();
        txtSSurname.setFont(new Font("Tahoma", Font.PLAIN, 12));
        txtSSurname.setColumns(10);
        txtSSurname.setBounds(10, 98, 129, 27);
        contentPane.add(txtSSurname);

        JLabel lblSearchByName = new JLabel("Filter by...");
        lblSearchByName.setFont(new Font("Tahoma", Font.BOLD, 14));
        lblSearchByName.setBounds(10, 1, 150, 23);
        contentPane.add(lblSearchByName);

        JComboBox cmbYearGroup = new JComboBox();
        cmbYearGroup.setFont(new Font("Tahoma", Font.PLAIN, 12));
        cmbYearGroup.setBounds(171, 44, 57, 27);
        contentPane.add(cmbYearGroup);
        fillYearGroup();
        revalidate();
        repaint();

        JLabel lblFForename = new JLabel("Forename");
        lblFForename.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFForename.setBounds(10, 26, 74, 14);
        contentPane.add(lblFForename);

        JLabel lblFSurname = new JLabel("Surname");
        lblFSurname.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFSurname.setBounds(10, 77, 74, 14);
        contentPane.add(lblFSurname);

        JLabel lblFRegSet = new JLabel("Registration Set");
        lblFRegSet.setHorizontalAlignment(SwingConstants.LEFT);
        lblFRegSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFRegSet.setBounds(305, 24, 107, 19);
        contentPane.add(lblFRegSet);

        JComboBox cmbRegSet = new JComboBox();
        cmbRegSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        cmbRegSet.setBounds(305, 42, 67, 27);
        contentPane.add(cmbRegSet);


        JLabel lblFYearGroup = new JLabel("Year Group");
        lblFYearGroup.setHorizontalAlignment(SwingConstants.LEFT);
        lblFYearGroup.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFYearGroup.setBounds(172, 26, 74, 14);
        contentPane.add(lblFYearGroup);



        JComboBox cmbPracticalSet = new JComboBox();
        cmbPracticalSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        cmbPracticalSet.setBounds(305, 98, 67, 27);
        contentPane.add(cmbPracticalSet);

        JLabel lblFPracticalSet = new JLabel("Practical Set");
        lblFPracticalSet.setHorizontalAlignment(SwingConstants.LEFT);
        lblFPracticalSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFPracticalSet.setBounds(305, 82, 86, 14);
        contentPane.add(lblFPracticalSet);

        JComboBox cmbSubject = new JComboBox();
        cmbSubject.setFont(new Font("Tahoma", Font.BOLD, 12));
        cmbSubject.setBounds(485, 44, 211, 27);
        contentPane.add(cmbSubject);

        JLabel lblFSubject = new JLabel("Subject");
        lblFSubject.setHorizontalAlignment(SwingConstants.LEFT);
        lblFSubject.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFSubject.setBounds(485, 26, 129, 14);
        contentPane.add(lblFSubject);

        JLabel lblFColumn = new JLabel("Column");
        lblFColumn.setHorizontalAlignment(SwingConstants.LEFT);
        lblFColumn.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFColumn.setBounds(485, 82, 57, 15);
        contentPane.add(lblFColumn);

        JComboBox cmbColumn = new JComboBox();
        cmbColumn.setFont(new Font("Tahoma", Font.BOLD, 12));
        cmbColumn.setBounds(485, 98, 67, 27);
        contentPane.add(cmbColumn);

        JLabel lblFColumnSet = new JLabel(" Column set");
        lblFColumnSet.setHorizontalAlignment(SwingConstants.LEFT);
        lblFColumnSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblFColumnSet.setBounds(562, 81, 90, 16);
        contentPane.add(lblFColumnSet);

        JComboBox cmbColumnSet = new JComboBox();
        cmbColumnSet.setFont(new Font("Tahoma", Font.BOLD, 12));
        cmbColumnSet.setBounds(562, 98, 67, 27);
        contentPane.add(cmbColumnSet);

        JButton btnFilter = new JButton("Filter");
        btnFilter.addActionListener(new ActionListener() {
            public void actionPerformed (ActionEvent arg0) {

                try {
                    String query="select Forename, Surname, YearGroup, Behaviour, Medical, Barriers, Strategies, Assessment from S1Pupils";
                    PreparedStatement pst=connection.prepareStatement(query);
                    ResultSet rs=pst.executeQuery();
                    table.setModel(DbUtils.resultSetToTableModel(rs));
                } catch(Exception e){
                    e.printStackTrace();
                }
            }

                });
        btnFilter.setFont(new Font("Tahoma", Font.BOLD, 12));
        btnFilter.setBounds(720, 101, 89, 23);
        contentPane.add(btnFilter);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(10, 136, 814, 134);
        contentPane.add(scrollPane);

        table = new JTable();
        scrollPane.setViewportView(table);

        }
    }

0 个答案:

没有答案