lilyy59
Messages postés22Date d'inscriptionlundi 1 novembre 2010StatutMembreDernière intervention19 mars 2012
-
15 mars 2012 à 21:03
lilyy59
Messages postés22Date d'inscriptionlundi 1 novembre 2010StatutMembreDernière intervention19 mars 2012
-
19 mars 2012 à 16:39
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++;
}
}
}
}
}
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 16 mars 2012 à 08:26
Bonjour,
Si tu as une JTable, tu as forcément un Renderer même si tu ne l'utilises pas explicitement dans ton code.
Déjà, enlèves ca :
catch (ClassNotFoundException e1) {
Plutot que de faire un table.setModel, je te conseil de construire directement la table avec le model en paramètre.
Je n'ai pas lu tout ton code, les catch des RuntimeException peuvent fausser l'erreur, essayes sans et dis moi si ca change quelque chose. En tout cas, si tu veux récupérer les traces de tes erreurs, ne catch pas les RuntimeException.
lilyy59
Messages postés22Date d'inscriptionlundi 1 novembre 2010StatutMembreDernière intervention19 mars 2012 17 mars 2012 à 21:11
J'ai toujours le même probleme ... Mes problèmes ont commencé quand j'ai voulu mettre du renderer dans ma table. J'ai voulu les enlever pour voir si ça marchait sans .