Witam wszystkich,
mam mały problem z aplikacją, którą pisze.
Zrobiłem już GUI (za pomocą window builder) przy czym nie wszystko działa tak, jak powinno.
Ale najpierw kod:
package gui;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import klasy_Zwykle.Klient;
import bazaDanych.KlientDB;
public class a {
private JFrame frame;
DefaultTableModel model = new DefaultTableModel(new Object[] [] {}, new String[] {"Id", "Imie", "Nazwisko", "Adres", "Pesel", "Nr konta", "Id firmy", "Rabat", "Adres Email"});
Klient k = new Klient();
KlientDB kl = new KlientDB();
JTextField txtId;
JTextField txtImie;
JTextField txtNazwisko;
JTextField txtAdres;
JTextField txtPesel;
JTextField txtIdfirmy;
JTextField txtRabat;
JTextField txtAdresmailowy;
JTextField txtNr_bankowy;
JButton bAdd, bSave, bDelete, bSearch;
JTable table;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
a a = new a();
// a.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.frame.setLocationByPlatform(true);
a.frame.pack();
a.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public a() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new GridLayout(0, 1, 0, 0));
JPanel panel = new JPanel();
frame.getContentPane().add(panel);
JLabel lbId = new JLabel("Id");
panel.add(lbId);
txtId = new JTextField();
panel.add(txtId);
txtId.setColumns(10);
JLabel lbImie = new JLabel("Imie");
panel.add(lbImie);
txtImie = new JTextField();
panel.add(txtImie);
txtImie.setColumns(10);
JLabel lbNazwisko = new JLabel("Nazwisko");
panel.add(lbNazwisko);
txtNazwisko = new JTextField();
panel.add(txtNazwisko);
txtNazwisko.setColumns(10);
JLabel lbAdres = new JLabel("Adres");
panel.add(lbAdres);
txtAdres = new JTextField();
panel.add(txtAdres);
txtAdres.setColumns(10);
JLabel lbPesel = new JLabel("Pesel");
panel.add(lbPesel);
txtPesel = new JTextField();
panel.add(txtPesel);
txtPesel.setColumns(10);
JLabel lbIdfirmy = new JLabel("Idfirmy");
panel.add(lbIdfirmy);
txtIdfirmy = new JTextField();
panel.add(txtIdfirmy);
txtIdfirmy.setColumns(10);
JLabel lbNr_bankowy = new JLabel("Nr bankwoy");
panel.add(lbNr_bankowy);
txtNr_bankowy = new JTextField();
panel.add(txtNr_bankowy);
txtNr_bankowy.setColumns(10);
JLabel lbRabat = new JLabel("Rabat");
panel.add(lbRabat);
txtRabat = new JTextField();
panel.add(txtRabat);
txtRabat.setColumns(10);
JLabel lbAdresmailowy = new JLabel("Adresmailowy");
panel.add(lbAdresmailowy);
txtAdresmailowy = new JTextField();
panel.add(txtAdresmailowy);
txtAdresmailowy.setColumns(10);
JButton bAdd = new JButton("Add");
panel.add(bAdd);
JButton bSave = new JButton("Save");
panel.add(bSave);
JButton bDelete = new JButton("Delete");
panel.add(bDelete);
JButton bSearch = new JButton("Search");
panel.add(bSearch);
table = new JTable();
frame.getContentPane().add(table);
table.setModel(model);
refresh();
AddEvents();
}
public void AddEvents(){
table.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
int selRow = table.getSelectedRow();
txtId.setText("" + table.getValueAt(selRow, 0));
txtImie.setText("" + table.getValueAt(selRow, 1));
txtNazwisko.setText("" + table.getValueAt(selRow, 2));
txtAdres.setText("" + table.getValueAt(selRow, 3));
txtPesel.setText("" + table.getValueAt(selRow, 4));
txtNr_bankowy.setText("" + table.getValueAt(selRow, 5));
txtIdfirmy.setText("" + table.getValueAt(selRow, 6));
txtRabat.setText("" + table.getValueAt(selRow, 7));
txtAdresmailowy.setText("" + table.getValueAt(selRow, 8));
}
});
bAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
k.setImie(txtImie.getText());
k.setNazwisko(txtNazwisko.getText());
k.setAdres(txtAdres.getText());
k.setPESEL(txtPesel.getText());
k.setNr_Bankowy(txtNr_bankowy.getText());
k.setId_firmy(Integer.parseInt(txtIdfirmy.getText()));
k.setRabat(Integer.parseInt(txtRabat.getText()));
k.setAdres_email(txtAdresmailowy.getText());
kl.insert(k);
model.setRowCount(0);
refresh();
}
});
bSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
k.setImie(txtImie.getText());
k.setNazwisko(txtNazwisko.getText());
k.setAdres(txtAdres.getText());
k.setPESEL(txtPesel.getText());
k.setNr_Bankowy(txtNr_bankowy.getText());
k.setId_firmy(Integer.parseInt(txtIdfirmy.getText()));
k.setRabat(Integer.parseInt(txtRabat.getText()));
k.setAdres_email(txtAdresmailowy.getText());
kl.update(k, Integer.parseInt(txtId.getText()));
model.setRowCount(0);
refresh();
}
});
bDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
kl.delete(Integer.parseInt(txtId.getText()));
model.setRowCount(0);
refresh();
}
});
bSearch.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
model.setRowCount(0);
Klient klient = kl.selectbyId(Integer.parseInt(txtId.getText()));
//refresh();
model.addRow(new Object[]{klient.getId(), k.getImie(), k.getNazwisko(), k.getAdres(), k.getPESEL(), k.getNr_Bankowy(), k.getId_firmy(), k.getRabat(), k.getAdres_email()});
}
});
}
public void refresh(){
List <Klient> klienci = kl.selectAllKlient();
for (Klient k: klienci){
model.addRow(new Object[]{k.getId(), k.getImie(), k.getNazwisko(), k.getAdres(), k.getPESEL(), k.getNr_Bankowy(), k.getId_firmy(), k.getRabat(), k.getAdres_email()});
}
}
}
Problem polega na tym, że po uruchomieniu nie dostaje Null pointer Ecxeption:
java.lang.NullPointerException
at gui.a.AddEvents(a.java:199)
at gui.a.<init>(a.java:152)
at gui.a$1.run(a.java:48)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.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)
Według eclipse błąd jest w miejscu public void AddEvents() - kiedy "wyłączam" metode w konstruktorze, gui normalnie się odpala. Co z tego skoro nie mogę niczego zmienić w tabeli.
Ma ktoś pomysł co jest nie tak?
Dodam, że napisałem podobny kod ręcznie (z tym, że w układzie Gridlayout i tam wszsytko śmiga - tu jak na złość nie...)