Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - nullpointer
Forum - Java - nullpointer

Avatar
spode (Normal User)
Pro


Messaggi: 151
Iscritto: 03/09/2010

Segnala al moderatore
Postato alle 23:16
Giovedì, 07/04/2011
Codice sorgente - presumibilmente Delphi

  1. l'errore è:
  2. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  3.        at filetrenner.GUI.showGruppo2(GUI.java:153)
  4.        at filetrenner.fileTrenner.setOutput(fileTrenner.java:52)
  5.        at filetrenner.fileTrenner.openStreamInput(fileTrenner.java:42)
  6.        at filetrenner.fileTrenner.setSorgente(fileTrenner.java:28)
  7.        at filetrenner.GUI$1.actionPerformed(GUI.java:66)
  8.        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
  9.        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
  10.        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
  11.        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  12.        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
  13.        at java.awt.Component.processMouseEvent(Component.java:6203)
  14.        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
  15.        at java.awt.Component.processEvent(Component.java:5968)
  16.        at java.awt.Container.processEvent(Container.java:2105)
  17.        at java.awt.Component.dispatchEventImpl(Component.java:4564)
  18.        at java.awt.Container.dispatchEventImpl(Container.java:2163)
  19.        at java.awt.Component.dispatchEvent(Component.java:4390)
  20.        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
  21.        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
  22.        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
  23.        at java.awt.Container.dispatchEventImpl(Container.java:2149)
  24.        at java.awt.Window.dispatchEventImpl(Window.java:2478)
  25.        at java.awt.Component.dispatchEvent(Component.java:4390)
  26.        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
  27.        at java.awt.EventQueue.access$000(EventQueue.java:96)
  28.        at java.awt.EventQueue$1.run(EventQueue.java:608)
  29.        at java.awt.EventQueue$1.run(EventQueue.java:606)
  30.        at java.security.AccessController.doPrivileged(Native Method)
  31.        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
  32.        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
  33.        at java.awt.EventQueue$2.run(EventQueue.java:622)
  34.        at java.awt.EventQueue$2.run(EventQueue.java:620)
  35.        at java.security.AccessController.doPrivileged(Native Method)
  36.        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
  37.        at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
  38.        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
  39.        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
  40.        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
  41.        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
  42.        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
  43.        at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
  44. COSTRUITO CON SUCCESSO (tempo totale: 12 secondi)



e i codici:
Codice sorgente - presumibilmente Java

  1. FILE: FILETRENNER.JAVA
  2.  
  3. package filetrenner;
  4.  
  5. import javax.swing.JFileChooser;
  6. import java.io.PrintStream;
  7. import java.io.File;
  8. import java.io.FileNotFoundException;
  9. import java.io.FileReader;
  10. import java.util.Scanner;
  11. import java.util.Random;
  12.  
  13. public class fileTrenner
  14. {
  15.  
  16.     private Scanner in = null;
  17.     private int maxCaratteri = 0;
  18.  
  19.     public void setSorgente(String maxCaratteri)
  20.     {
  21.         this.maxCaratteri = Integer.parseInt(maxCaratteri);
  22.         String desktop = System.getProperty("user.home");//NOTA
  23.         JFileChooser chooser = new JFileChooser(desktop.concat("\\Desktop"));
  24.         chooser.setMultiSelectionEnabled(false);
  25.                 if(chooser.showOpenDialog( null) == JFileChooser.APPROVE_OPTION)
  26.                 {
  27.                     sorgente = chooser.getSelectedFile();
  28.                 }
  29.  
  30.         this.openStreamInput();
  31.     }
  32.  
  33.     private void openStreamInput()
  34.     {
  35.         try
  36.         {
  37.             in = new Scanner(new FileReader(sorgente));
  38.         }
  39.         catch(FileNotFoundException e)
  40.         {
  41.             scrivi("Impossibile accedere al file sorgente... " + e);
  42.             this.setSorgente(null);
  43.         }
  44.         this.setOutput();
  45.     }
  46.  
  47.     public void setOutput()
  48.     {
  49.         String destinazione = sorgente.getAbsolutePath().toString().replace(".txt", " - diviso per ").concat(Integer.toString(maxCaratteri)).concat(".txt");
  50.         File output = new File(destinazione);
  51.  
  52.         GUI interfaccia = new GUI();
  53.         interfaccia.showGruppo2(sorgente.getName(), output.getAbsolutePath());
  54.         this.openStreamOutput(output);
  55.     }
  56.  
  57.     PrintStream out = null;
  58.     public void openStreamOutput(File output)
  59.     {
  60.         try
  61.         {
  62.             out = new PrintStream(output);
  63.         }
  64.         catch(FileNotFoundException  f)
  65.         {
  66.             scrivi("Impossibile aprire il file di destinazione... " + f);
  67.         }
  68.     }
  69.  
  70.     public void trennen()
  71.     {
  72.         int somma = 0;
  73.         while(in.hasNext())
  74.         {
  75.             String next = in.next();
  76.             if(somma + next.length() + 1 == maxCaratteri)
  77.             {
  78.                 somma = 0;
  79.                 out.println(next);
  80.             }
  81.             else if(somma + next.length() + 1 < maxCaratteri)
  82.             {
  83.                 somma = somma + 1 + next.length();
  84.                 out.print(next.concat(" "));
  85.             }
  86.             else
  87.             {
  88.                 somma = next.length();
  89.                 out.println();
  90.                 out.print(next.concat(" "));
  91.             }
  92.         }
  93.         GUI interfaccia = new GUI();
  94.         interfaccia.showGruppo3();
  95.     }
  96.  
  97.     public static File sorgente = null;
  98.     public static void main(String[] args)
  99.     {
  100.         fileTrenner divisore = new fileTrenner();
  101.         //divisore.openBenvenuto();
  102.  
  103.         GUI interfaccia = new GUI();
  104.         interfaccia.creaFrame();
  105.         interfaccia.gruppo1();
  106.         interfaccia.gruppo2();
  107.         interfaccia.gruppo3();
  108.     }
  109.  
  110.     private void openBenvenuto()
  111.     {
  112.         Random generatore = new Random();
  113.         int casuale = generatore.nextInt();
  114.        
  115.     }
  116.  
  117.     private static void scrivi(String testo)
  118.     {
  119.         System.out.println(testo);
  120.     }
  121. }



Codice sorgente - presumibilmente Java

  1. FILE: GUI.JAVA
  2.  
  3. package filetrenner;
  4. import javax.swing.*;
  5. import java.awt.Color;
  6. import java.awt.TextField;
  7. import java.awt.Label;
  8. import java.awt.event.*;
  9.  
  10. public class GUI
  11. {
  12.     fileTrenner divisore = new fileTrenner();
  13.  
  14.     public JFrame frame = null;
  15.     public void creaFrame()
  16.     {
  17.         frame = new JFrame ("File Trenner für Zippo");
  18.         frame.setAlwaysOnTop(true);
  19.         frame.setSize(500, 500);
  20.         frame.setLocation(700, 10);
  21.         frame.setVisible(true);
  22.         frame.setResizable(false);
  23.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  24.         frame.setLayout(null);
  25.  
  26.         ImageIcon icon = new ImageIcon("/home/spode/Scrivania/sfondo.png");
  27.         JLabel sfondo = new JLabel(icon);
  28.         sfondo.setSize(frame.getSize());
  29.         sfondo.setLocation(frame.getLocation());
  30.         frame.add(sfondo);
  31.     }
  32. ////////////////////////////////////////////////////////////////////////////////////////////
  33.     TextField testo1 = new TextField();
  34.     public void gruppo1()
  35.     {
  36.                 JButton pulsante1 = null;
  37.  
  38.         Label label1 = new Label("Caratteri per riga: ");
  39.         label1.setSize(125, 15);
  40.         label1.setLocation(10, 10);
  41.         label1.setForeground(Color.black);
  42.         frame.add(label1);
  43.  
  44.         testo1.setSize(75, 15);
  45.         testo1.setLocation(160, 10);
  46.         testo1.setColumns(3);
  47.         testo1.setEditable(true);
  48.         testo1.getCursor();
  49.         testo1.setForeground(Color.orange);
  50.         frame.add(testo1);
  51.  
  52.         pulsante1 = new JButton("0k");
  53.         pulsante1.setForeground(Color.green);
  54.         pulsante1.setVisible(true);
  55.         pulsante1.setSize(60, 15);
  56.         pulsante1.setLocation(10, 40);
  57.         frame.add(pulsante1);
  58.         pulsante1.addActionListener(new ActionListener()
  59.         {
  60.             public void actionPerformed(ActionEvent e)
  61.             {
  62.                 try
  63.                 {
  64.                 if(Integer.parseInt(testo1.getText()) > 0)
  65.                 {
  66.                     System.out.println(testo1.getText());
  67.                     divisore.setSorgente(testo1.getText());
  68.                 }
  69.                 }
  70.                 catch(NumberFormatException ex)
  71.                 {
  72.                     testo1.setText("");
  73.                 }
  74.             }
  75.         }
  76.                 );
  77.     }
  78. ///////////////////////////////////////////////////////////////////////////////////////////////
  79.     Label label2 = null;
  80.     Label label3 = null;
  81.     Label label4 = null;
  82.     Label label5 = null;
  83.     JButton pulsante2 = null;
  84.     JButton pulsante3 = null;
  85.     public void gruppo2()
  86.     {
  87.         label2 = new Label("File Sorgente: ");
  88.         label2.setForeground(Color.black);
  89.         label2.setLocation(10, 100);
  90.         label2.setSize(90, 15);
  91.         label2.setVisible(false);
  92.         frame.add(label2);
  93.  
  94.         label3 = new Label();
  95.         label3.setForeground(Color.orange);
  96.         label3.setSize(90, 15);
  97.         label3.setLocation(100, 100);
  98.         label3.setVisible(false);
  99.         frame.add(label3);
  100.  
  101.         label4 = new Label("File Output: ");
  102.         label4.setForeground(Color.black);
  103.         label4.setVisible(false);
  104.         label4.setLocation(label2.getX(), label2.getY() + 30);
  105.         label4.setSize(label2.getSize());
  106.         frame.add(label4);
  107.  
  108.         label5 = new Label();
  109.         label5.setForeground(Color.orange);
  110.         label5.setVisible(false);
  111.         label5.setLocation(label3.getX(), label3.getY() + 30);
  112.         label5.setSize(100, label2.getHeight());
  113.         frame.add(label5);
  114.  
  115.         pulsante2 = new JButton("0k!");
  116.         pulsante2.setForeground(Color.green);
  117.         pulsante2.setSize(60, 15);
  118.         pulsante2.setLocation(label4.getX(), label4.getY() + 30);
  119.         pulsante2.setVisible(false);
  120.         frame.add(pulsante2);
  121.         pulsante2.addActionListener(new ActionListener()
  122.         {
  123.             public void actionPerformed(ActionEvent e)
  124.             {
  125.                 divisore.trennen();
  126.             }
  127.         });
  128.  
  129.         pulsante3 = new JButton("Reset");
  130.         pulsante3.setForeground(Color.red);
  131.         pulsante3.setSize(75, 15);
  132.         pulsante3.setLocation(75, pulsante2.getY());
  133.         pulsante3.setVisible(false);
  134.         frame.add(pulsante3);
  135.         pulsante3.addActionListener(new ActionListener()
  136.         {
  137.             public void actionPerformed(ActionEvent e)
  138.             {
  139.                 testo1.setText("");
  140.                 label2.setVisible(false);
  141.                 label3.setVisible(false);
  142.                 label4.setVisible(false);
  143.                 label5.setVisible(false);
  144.                 pulsante2.setVisible(false);
  145.                 pulsante3.setVisible(false);
  146.             }
  147.         });
  148.         System.out.println("gruppo2");
  149.     }
  150.  
  151.     public void showGruppo2(String nome, String nomeOut)
  152.     {
  153.         this.label2.setVisible(true);//RIGA 153!
  154.         this.label3.setText(nome);
  155.         this.label4.setVisible(true);
  156.         this.label5.setText(nomeOut);
  157.         this.label5.setVisible(true);
  158.     }
  159. /////////////////////////////////////////////////////////////////////////////////////////
  160.     Label label6 = null;
  161.     JComboBox comboBox = new JComboBox();
  162.     JButton pulsante4 = null;
  163.     Label label7 = null;
  164.     public void gruppo3()
  165.     {
  166.         label6 = new Label("Riprovi? ");
  167.         label6.setForeground(Color.black);
  168.         label6.setVisible(false);
  169.         label6.setLocation(pulsante2.getX(), pulsante2.getY() + 80);
  170.         label6.setSize(55, 15);
  171.         frame.add(label6);
  172.  
  173.         comboBox.addItem("Si");
  174.         comboBox.setLocation(70, label6.getY());
  175.         comboBox.setSelectedIndex(0);
  176.         comboBox.setVisible(false);
  177.         comboBox.setSize(40, 20);
  178.  
  179.         comboBox.addItem("No");
  180.         frame.add(comboBox);
  181.         comboBox.addActionListener(new ActionListener()
  182.         {
  183.             public void actionPerformed(ActionEvent e)
  184.             {
  185.                 System.exit(0);
  186.             }
  187.         });
  188.  
  189.         pulsante4 = new JButton();
  190.         pulsante4.setLocation(120, 200);
  191.         pulsante4.setSize(pulsante2.getSize());
  192.         pulsante4.setForeground(Color.black);
  193.         pulsante4.setVisible(false);
  194.         frame.add(pulsante4);
  195.         pulsante4.addActionListener(new ActionListener()
  196.         {
  197.             public void actionPerformed(ActionEvent e)
  198.             {
  199.                 label7.setVisible(false);
  200.                 label2.setVisible(false);
  201.                 label4.setVisible(false);
  202.                 label3.setVisible(false);
  203.                 label5.setVisible(false);
  204.                 label6.setVisible(false);
  205.                 pulsante2.setVisible(false);
  206.                 pulsante3.setVisible(false);
  207.                 pulsante4.setVisible(false);
  208.                 comboBox.setVisible(false);
  209.             }
  210.         });
  211.  
  212.         label7 = new Label("Formattazione avvenuta con successo!");
  213.         label7.setForeground(Color.black);
  214.         label7.setLocation(120, 330);
  215.         label7.setVisible(false);
  216.         label7.setSize(245, 15);
  217.         frame.add(label7);
  218.         System.out.println("gruppo 3");
  219.     }
  220.  
  221.     public void showGruppo3()
  222.     {
  223.         this.label6.setVisible(true);
  224.         this.label7.setVisible(true);
  225.         this.comboBox.setVisible(true);
  226.         this.pulsante4.setVisible(true);
  227.     }
  228. }


Ultima modifica effettuata da spode il 07/04/2011 alle 23:18
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 10:06
Domenica, 10/04/2011
Ciao!!

Il problema è che l'oggetto GUI quando fai questa cosa qui:
Codice sorgente - presumibilmente Java

  1. GUI interfaccia = new GUI();
  2.         interfaccia.showGruppo2(sorgente.getName(), output.getAbsolutePath());



viene resettato quindi la variabile "label2" viene impostata a "null", quindi quando viene chiamato il ".setVisible(true)" ti parte una eccezione.

Per risolvere dovresti chiamare il metodo "gruppo2" prima di di uitlizzare il metodo "showGruppo2(...)" o altrimenti la inizializzi da qualche altra parte, o altrimenti ancora non stai a ricreare ogni volta sempre la stessa classe, la creai una volta e poi la riutilizzi nel codice.

Ciaociao!!

PM Quote
Avatar
spode (Normal User)
Pro


Messaggi: 151
Iscritto: 03/09/2010

Segnala al moderatore
Postato alle 13:25
Domenica, 10/04/2011
penso che sceglierò l'ultima. grazie! =)

PM Quote