Bonjour,
Lorsque je veux remplis un tableau a partir d'une liste j'ai l'erreur :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JTable.prepareRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.access$700(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.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)
Je ne comprend pas je n'ai pas de renderer dans mon code.
public DomaineIHM(final Magasin magasin) throws FileNotFoundException, IOException {
setBounds(100, 100, 620, 499);
getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new LineBorder(new Color(0, 0, 0)));
panel.setBounds(10, 11, 584, 69);
getContentPane().add(panel);
panel.setLayout(null);
JLabel lblNouveauDomaine = new JLabel("Nouveau domaine");
lblNouveauDomaine.setBounds(10, 25, 132, 14);
panel.add(lblNouveauDomaine);
txtnom = new JTextField();
txtnom.setBounds(116, 22, 171, 20);
panel.add(txtnom);
txtnom.setColumns(10);
comboBox = new JComboBox();
comboBox.setBounds(10, 110, 175, 20);
getContentPane().add(comboBox);
for(Domaine d : magasin.getLesDomaines()){
comboBox.addItem(d.getLibelle());
}
comboBox.setSelectedIndex(0);
JButton btnAjouter = new JButton("Ajouter");
btnAjouter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String nom = txtnom.getText();
txtnom.setText(" ");
Domaine dom = new Domaine(nom);
magasin.getLesDomaines().add(dom);
comboBox.addItem(nom);
try {
b.ajouterDomaine(dom);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
btnAjouter.setBounds(438, 21, 89, 23);
panel.add(btnAjouter);
JButton btnSupprimer = new JButton("Supprimer");
btnSupprimer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int rep = JOptionPane.showConfirmDialog(null,"Voulez vous vraiment supprimer ce domaine? Attention cela entrainera la suppression des objets associés", "Suppression d'un domaine", JOptionPane.YES_NO_OPTION);
if(rep == JOptionPane.YES_OPTION){
System.out.println(comboBox.getSelectedIndex());
Domaine d = magasin.getLesDomaines().get(comboBox.getSelectedIndex());
magasin.getLesDomaines().remove(d);
try {
b.supprimerDomaine(d);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
List<Objet> temp = new LinkedList<Objet>();
for(Objet o : magasin.getLesObjets()){
if(o.getNomDom().equals(d.getLibelle())){
temp.add(o);
}
}
for(Objet t : temp){
magasin.getLesObjets().remove(t);
}
comboBox.removeAllItems();
for(Domaine d1 : magasin.getLesDomaines()){
comboBox.addItem(d1.getLibelle());
}
}
}
});
btnSupprimer.setBounds(218, 109, 89, 23);
getContentPane().add(btnSupprimer);
JPanel panel_1 = new JPanel();
panel_1.setBounds(10, 204, 584, 224);
getContentPane().add(panel_1);
panel_1.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(0, 0, 584, 224);
panel_1.add(scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
JLabel lblAjouter = new JLabel("Ajouter ");
lblAjouter.setBounds(10, 141, 46, 14);
getContentPane().add(lblAjouter);
textField = new JTextField();
textField.setBounds(84, 166, 86, 20);
getContentPane().add(textField);
textField.setColumns(10);
JLabel lblNom = new JLabel("Nom");
lblNom.setBounds(10, 169, 46, 14);
getContentPane().add(lblNom);
JLabel lblPrix = new JLabel("Prix");
lblPrix.setBounds(206, 169, 46, 14);
getContentPane().add(lblPrix);
textField_1 = new JTextField();
textField_1.setBounds(274, 166, 86, 20);
getContentPane().add(textField_1);
textField_1.setColumns(10);
JButton btnAjouter_1 = new JButton("Ajouter");
btnAjouter_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String libel = textField.getText();
float prix = Float.parseFloat(textField_1.getText()) ;
System.out.println( magasin.getLesDomaines().get(comboBox.getSelectedIndex()).getLibelle());
Objet ob = new Objet(libel, prix, magasin.getLesDomaines().get(comboBox.getSelectedIndex()).getLibelle() );
domselect = magasin.getLesDomaines().get(comboBox.getSelectedIndex());
try {
b.ajouterObjet(ob);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// remplirTableauForm(ob);
}
});
btnAjouter_1.setBounds(388, 165, 89, 23);
getContentPane().add(btnAjouter_1);
DefaultTableModel model=(DefaultTableModel)table.getModel();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"Nom", "prix"
}
) {
Class[] columnTypes = new Class[] {
String.class, float.class
};
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
});
table.getColumnModel().getColumn(0).setResizable(false);
table.getColumnModel().getColumn(0).setPreferredWidth(76);
remplirTableau(magasin);
System.out.println("héhé");
setVisible(true);
}
private void remplirTableau(Magasin magasin) {
// TODO Auto-generated method stub
int p=0;
for(Objet o : magasin.getLesObjets()){
if(o.getNomDom().equals(magasin.getLesDomaines().get(comboBox.getSelectedIndex()).getLibelle())){
p++;
}
}
DefaultTableModel model=(DefaultTableModel)table.getModel();
model.setRowCount(p);
int l=0;
for(Objet o : magasin.getLesObjets()){
if(o.getNomDom().equals(magasin.getLesDomaines().get(comboBox.getSelectedIndex()).getLibelle())){
if(l<=p-1){
model.setValueAt(o.getLibelle(), l, 0);
model.setValueAt(o.getPrix(), l, 1);
l++;
}
}
}
}
}
merci