我正在尝试从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);
}
}