argate7 Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 Καλησπέρα, Έχω ένα σχετικά εκνευριστικό πρόβλημα... Θέλω μέσα στο arraylist μου να περάσω 3 τιμές. 2 String και ένα long. Ενώ δεν βρίσκει κάποιο πρόβλημα ο compiler, στον debugger χτυπάει ένα null pointer exception. Μήπως ξέρει κάποιος τι μπορώ να κάνω? public class add extends JFrame implements ActionListener { JButton savebutton; JButton cancelbutton; JFrame fFrame; JTextField lntxf; JTextField fntxf; JTextField pntxf; ArrayList<Employee> empl; DataBase d; add() { super("Add a new employee"); JPanel panel = new JPanel(new GridLayout(10, 2)); JPanel buttonpanel = new JPanel(); JLabel lnlbl = new JLabel("Last Name :"); lntxf = new JTextField(""); lntxf.setHorizontalAlignment(JTextField.LEFT); lnlbl.setLabelFor(lntxf); JLabel fnlbl = new JLabel("First Name :"); fntxf = new JTextField(""); lntxf.setHorizontalAlignment(JTextField.LEFT); fnlbl.setLabelFor(lntxf); JLabel pnlbl = new JLabel("Phone Number :"); pntxf = new JTextField(""); pnlbl.setLabelFor(pntxf); savebutton = new JButton("Save"); cancelbutton = new JButton("Cancel"); panel.add(lnlbl); panel.add(lntxf); panel.add(fnlbl); panel.add(fntxf); panel.add(pnlbl); panel.add(pntxf); this.add(panel, BorderLayout.NORTH); buttonpanel.add(savebutton); buttonpanel.add(cancelbutton); this.add(buttonpanel, BorderLayout.SOUTH); Point center = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint(); int windowWidth = 300; int windowHeight = 300; this.setBounds(center.x - windowWidth / 2, center.y - windowHeight / 2, windowWidth, windowHeight); this.setResizable(false); this.setVisible(true); cancelbutton.addActionListener(this); //register the handler savebutton.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == cancelbutton) { dispose(); } if (e.getSource() == savebutton) { try { Employee emp = new Employee(lntxf.getText(), fntxf.getText(), pntxf.getText()); d = new DataBase(); d.addEmployee(emp); d.listAllEmployees(); } catch (NullPointerException ex) { System.out.println("Problem..."); } } } } Τί λάθος έχω κάνει και δεν αποθηκεύει μέσα στο arraylist μου τα στοιχεία που θέλω? Τί πρέπει να διορθώσω? Ευχαριστώ εκ των προτέρων όλους σας για τη βοήθεια σας!!
virxen75 Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 } catch (NullPointerException ex) { System.out.println("Problem..."); κάνε το έτσι > } catch (NullPointerException ex) { System.out.println("Problem..."+ex.toString()); και στείλε το μήνυμα λάθους που σου εμφανίζει
Technology fan Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 Από οτι μπορώ να διακρίνω (σπόντα επειδή δεν το βαλες σε code tags ) το arraylist empl δεν το χρησιμοποιείς κάπου ε? Μπορείς να δώσεις και την κλάση Database? Ποια είναι η κλήση των συναρτήσεων οι οποίες σου δίνουν το nullpointer exception?
argate7 Δημοσ. 4 Απριλίου 2011 Μέλος Δημοσ. 4 Απριλίου 2011 @virxen75 Το μήνυμα που μου ζήτησες είναι το εξής: Problem...java.lang.NullPointerException @Technoloy fan Χτυπάει όταν πάει να εκτελέσει την εντολή d.addEmployee(emp); Η addEmployee είναι η εξής: public void addEmployee(Employee e) { emp.add(e); } Και μέσα στην DataBase έχω 2 constructors έναν άδειο και έναν: public DataBase(ArrayList<Employee>emp) { this.emp = emp; for(Employee e:emp) { e.toString(); } }
virxen75 Δημοσ. 4 Απριλίου 2011 Δημοσ. 4 Απριλίου 2011 στον άδειο constructor πρόσθεσε αυτό >this.emp=new ArrayList<Employee>();
argate7 Δημοσ. 4 Απριλίου 2011 Μέλος Δημοσ. 4 Απριλίου 2011 @virxen75 Σ'ευχαριστώ πολύ ρε μάγκα μου. Αυτό ήταν όλο. Μου έσπασε τα νεύρα μία γραμμή κώδικα.. Έλεος ρε γ@μώτο μου.. Ευχαριστώ πολύ φίλε μου!! Νά'σαι καλά!!
argate7 Δημοσ. 5 Απριλίου 2011 Μέλος Δημοσ. 5 Απριλίου 2011 Να ρωτήσω κάτι ακόμα... Κάνω την εισαγωγή ενός ατόμου και το γράφω σε ένα text αρχείο. Το πρόβλημα μου είναι το κάθε φορά που εισάγω έναν, μου πετάει τους προηγούμενους. Είναι σαν να πετάει το παλιό αρχείο και να εισάγει ένα νέο με την νέα εγγραφή. Ο κώδικας μου έχει ως εξής: try { Employee emp = new Employee(lntxf.getText(), fntxf.getText(), pntxf.getText()); d = new DataBase(); d.addEmployee(emp); BufferedWriter bw = new BufferedWriter(new FileWriter("aaa.txt")); d.addEmployee(emp); bw.write(emp.toString()); bw.newLine(); bw.close(); } catch (NullPointerException ex) { System.out.println("Problem with null pointer..."); } catch (IOException ex) { System.out.println("Preblem with io..."); } Ποιο είναι το λάθος μου εδώ? Και κάτι παρόμοιο έχω με τη διαγραφή από ένα JList μιας εγγραφής. Ο κώδικας είναι ο εξής: try { if (emp.size() > mylist.getSelectedIndex()) { BufferedWriter output = new BufferedWriter(new FileWriter("aaa.txt", true)); emp.remove(mylist.getSelectedIndex()); for (Employee employee : emp) { String word = employee.toString(); output.write(word); output.newLine(); } output.close(); d.update(); mylist.updateUI(); } } catch (IOException ex) { Logger.getLogger(deleteframe.class.getName()).log(Level.SEVERE, null, ex); } Εδώ τι λάθος έχω κάνει πάλι? Ευχαριστώ και πάλι για τη βοήθεια!!
Technology fan Δημοσ. 5 Απριλίου 2011 Δημοσ. 5 Απριλίου 2011 Δημιουργείς κάθε φορά ένα καινούργιο αρχείο με ίδιο όνομα με το παλιό, οπότε σβήνει το παλιό και γράφει το καινουργιο, πρέπει να προσθέσεις τα άτομα, ψάξε το με τον όρο "append"! πρέπει νομίζω να δίνεται αυτή η δυνατότητα στη java, δες σε κανα javadoc.
argate7 Δημοσ. 5 Απριλίου 2011 Μέλος Δημοσ. 5 Απριλίου 2011 Και αυτό το πρόβλημα λύθηκε. Στο δεύτερο έβαλα τον κώδικα του πρώτου και δούλεψε και στο πρώτο απλά έκανα έναν έλεγχο αν υπάρχει αυτό το αρχείο ή όχι και να κάνει τις επόμενες ενέργειες. Απλό ήταν τελικά. @Technology fan Τελικά δεν βρήκα κάτι με append, αλλά ο έλεγχος ήταν αυτός που έσωσε την κατάσταση!
argate7 Δημοσ. 6 Απριλίου 2011 Μέλος Δημοσ. 6 Απριλίου 2011 Παιδιά νέο πρόβλημα.. Θέλω να επιλέξω από μία λίστα έναν υπάλληλο και πατώντας ένα κουμπί να μου εμφανίσει μία νέα σελίδα με τα textfields γεμάτα από τα στοιχεία του. Δηλαδή το όνομα, το επώνυμο και η ηλικία να είναι ήδη γραμμένα στα νέα textfields. Κάτι σαν update ας πούμε. Στην πρώτη φόρμα στο κουμπί του "select" έχω τον παρακάτω κώδικα : if (e.getSource() == selectbutton) { fFrame = new updateframe(mylist.getSelectedIndex()); fFrame.setVisible(true); setVisible(false); } Η νέα φόρμα λοιπόν, είναι έτσι : newframe(int i) { super("Στοιχεία"); JPanel panel = new JPanel(new GridLayout(10, 2)); JPanel buttonpanel = new JPanel(); JLabel lnlbl = new JLabel("Last Name :"); JTextField lntxf = new JTextField(emp.get(i).getLastname()); lntxf.setHorizontalAlignment(JTextField.LEFT); lnlbl.setLabelFor(lntxf); JLabel fnlbl = new JLabel("First Name :"); JTextField fntxf = new JTextField(emp.get(i).getFirstname()); fntxf.setHorizontalAlignment(JTextField.LEFT); fnlbl.setLabelFor(fntxf); JLabel albl = new JLabel("First Name :"); JTextField atxf = new JTextField(emp.get(i).getAge()); atxf.setHorizontalAlignment(JTextField.LEFT); albl.setLabelFor(atxf); . . . . . } Και μου πετάει Null Pointer Exception στις παρακάτω γραμμές κώδικα... JTextField lntxf = new JTextField(emp.get(i).getLastname()); JTextField fntxf = new JTextField(emp.get(i).getFirstname()); JTextField atxf = new JTextField(emp.get(i).getAge()); Τι πρέπει να κάνω εδώ για να το διορθώσω αυτό το πρόβλημα? Δεν μπορώ να καταλάβω γιατί χτυπάει πρόβλημα εκεί. Ευχαριστώ και πάλι για τη βοήθεια!!
Technology fan Δημοσ. 6 Απριλίου 2011 Δημοσ. 6 Απριλίου 2011 To emp σε ποιό μέρος το έχεις δηλώσει? δες αν το κατασκευάζεις, Δες αν το "i" αντικείμενο της λίστας σου υπάρχει..
argate7 Δημοσ. 6 Απριλίου 2011 Μέλος Δημοσ. 6 Απριλίου 2011 Το i υπάρχει γιατί το βάζω να μου το τυπώνει και μου το εμφανίζει κάθε φορά που κάνω μία επιλογή. private ArrayList<Employee> emp = new ArrayList<Employee>(); Αυτό κάνω για τη δήλωση του emp.
Technology fan Δημοσ. 6 Απριλίου 2011 Δημοσ. 6 Απριλίου 2011 Ναι έτσι κάνεις δήλωση αλλα δεν ξέρω τι θέλεις να πας να κάνεις, λανθασμένο μου φαίνεται... για το "ι" δεν εννοούσα αν παίρνει τιμή το ίδιο αλλά αν ειναι ας πούμε το 5, βεβαιώσου οτι η λίστα σου έχει αρκετά αντικείμενα μέσα της.
argate7 Δημοσ. 6 Απριλίου 2011 Μέλος Δημοσ. 6 Απριλίου 2011 Μέσα στο arraylist έχω 3 αντικείμενα. Τι πρέπει να κάνω που το κάνω λάθος?
Technology fan Δημοσ. 6 Απριλίου 2011 Δημοσ. 6 Απριλίου 2011 Μέσα στο arraylist έχω 3 αντικείμενα. Τι πρέπει να κάνω που το κάνω λάθος? Το i σου πόσο είναι??
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.