Я довольно новичок в Java, и я пытаюсь заполнить свой JList данными из базы данных. Данные извлекаются из базы данных с помощью метода visKunder() в классе Database.AWT-EventQueue-0 NullPointerException [RESOLVED]
public ArrayList<Kunde> visKunder(){
String s1 = "select kundenavn, adresse, telefon from kunde";
Statement setning = null;
String kundenavn = null;
String adresse = null;
int telefon = 0;
ResultSet res = null;
ArrayList<Kunde> kunder = new ArrayList<>();
try{
forbindelse.setAutoCommit(false);
setning = forbindelse.createStatement();
res = setning.executeQuery(s1);
while(res.next()){
kundenavn = res.getString("kundenavn");
adresse = res.getString("adresse");
telefon = res.getInt("telefon");
Kunde kunde = new Kunde(kundenavn, telefon, adresse);
kunder.add(kunde);
}
forbindelse.commit();
}catch(SQLException error){
Opprydder.rullTilbake(forbindelse);
Opprydder.skrivMelding(error, "visKunder()");
}finally{
Opprydder.lukkSetning(setning);
Opprydder.lukkResSet(res);
try {
forbindelse.setAutoCommit(true);
} catch (SQLException ex) {
Opprydder.skrivMelding(ex, "setAutoCommit()");
}
}
return kunder;
}
Проблема возникает, когда я призываю visKunder() в классе GUI RegVedKjøp. printStackTrace() указывает visKunder() как проблему для исключения NullPointerException.
public class RegVedKjøp extends javax.swing.JFrame {
private static Database d1;
public RegVedKjøp(Database d1) {
initComponents();
this.d1 = d1;
}
private void initComponents(){
...
JList jList2 = new JList();
fyllListe(jList2);
...
}
private void fyllListe(JList list){
ArrayList<Kunde> kunder = d1.visKunder();
list = new JList(kunder.toArray());
}
Я не знаю, если это уместно, но я использовал Netbeans' GUI Builder для разработки GUI. Любые советы о том, как исправить эту проблему, будут очень оценены.
EDIT:
private void initComponents() {
scrollbar1 = new java.awt.Scrollbar();
lagreKnapp = new javax.swing.JButton();
tKnapp = new javax.swing.JButton();
label1 = new java.awt.Label();
jLabel2 = new javax.swing.JLabel();
txtType = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
txtAntall = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
txtPris = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jList2 = new JList();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Registrer kjøp av ved - Dagsverket");
setAlwaysOnTop(true);
setResizable(false);
lagreKnapp.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
lagreKnapp.setText("Lagre");
lagreKnapp.setPreferredSize(new java.awt.Dimension(95, 50));
lagreKnapp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
lagreKnappActionPerformed(evt);
}
});
tKnapp.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
tKnapp.setText("Tilbake");
tKnapp.setPreferredSize(new java.awt.Dimension(75, 30));
tKnapp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tKnappActionPerformed(evt);
}
});
label1.setText("label1");
jLabel2.setFont(new java.awt.Font("sansserif", 1, 14)); // NOI18N
jLabel2.setText("Vedtype:");
jLabel2.setFocusable(false);
jLabel2.setPreferredSize(new java.awt.Dimension(70, 25));
jLabel1.setFont(new java.awt.Font("sansserif", 1, 14)); // NOI18N
jLabel1.setText("Antall sekker:");
jLabel1.setFocusable(false);
jLabel1.setName(""); // NOI18N
jLabel1.setPreferredSize(new java.awt.Dimension(70, 25));
jLabel3.setFont(new java.awt.Font("sansserif", 1, 14)); // NOI18N
jLabel3.setText("Pris pr/sekk:");
jLabel4.setFont(new java.awt.Font("SansSerif", 1, 14)); // NOI18N
jLabel4.setText("Kunde:");
jButton1.setFont(new java.awt.Font("SansSerif", 0, 14)); // NOI18N
jButton1.setText("Registrer Ny Kunde");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
Этот код генерируется GUI Builder. Я также должен указать, что этот класс является одним из нескольких, который помогает отображать графический интерфейс. Каждый класс отвечает за одну операцию, запрошенную пользователем. Все они собраны в классе Mainpage, который используется в классе System, который запускает всю программу. Первое, что делается в System, - это создание объекта базы данных и подключение к базе данных. Этот объект базы данных является тогда тем, что затем используется как параметр в каждом классе GUI.
, какая линия обсаженных исключение? – Salah
Я думаю, что это ArrayList kunder = d1.visKunder(), но я не могу понять, почему. Исключение в нити "АВТ-EventQueue-0" java.lang.NullPointerException \t на sysbase.RegVedKjøp.fyllListe (RegVedKjøp.java: 181) \t на sysbase.RegVedKjøp.initComponents (RegVedKjøp.java: 105) \t на sysbase.RegVedKjøp. (RegVedKjøp.java: 28) –
Да, но какая строка из вашего кода? – Salah