ciao a tutti,
ho scritto un programma in java con interfaccia grafica che genera stringhe casuali, e il compilatore non da errori, ma quando lo eseguo e clicco sul pulsante genera esce un'eccezione:
questo è il programma (so che è un po lungo da esaminare, ma per favore dateci un'occhiata...) comunque il problema dovrebbe essere nell'ascoltatore (evidenziato in rosso)codice:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at StringaCasuale$Genera.actionPerformed(StringaCasuale.java:183) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(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)
non sono molto esperto con java e non ho idea di dove andare a cercare l'errore...codice:import javax.swing.*; import java.awt.*; import java.awt.event.*; public class StringaCasuale extends JFrame { JLabel title=new JLabel("GENERATORE DI STRINGHE CASUALI"); JLabel tlunghezza=new JLabel("Lunghezza della stringa"); JLabel max=new JLabel("Massima"); TextField gmaxlen=new TextField("32",2); JLabel min=new JLabel("Minima"); TextField gminlen=new TextField("32",2); JLabel ecaratteri=new JLabel("Caratteri che potranno essere utilizzati nella stringa "); JCheckBox maiuscole=new JCheckBox("Lettere maiuscole",false); JCheckBox minuscole=new JCheckBox("Lettere minuscole",true); JCheckBox numeri=new JCheckBox("Numeri",true); JCheckBox speciali=new JCheckBox("Caratteri speciali (!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|})",false); JCheckBox spazio=new JCheckBox("Spazio",false); JCheckBox personalizzato=new JCheckBox("Aggiungi alla selezione i seguenti caratteri:",false); TextField tpersonalizzato=new TextField(30); JButton genera=new JButton("Genera"); TextField gout=new TextField(59); public StringaCasuale() { //Dichiarazione proprietà finestra setTitle("Generatore di stringhe casuali (ASCII, Codifica non estesa)"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocation(100,100); setSize(540,350); setVisible(true); setResizable(false); //Definizione layout GridBagLayout layout=new GridBagLayout(); GridBagConstraints lim=new GridBagConstraints(); getContentPane().setLayout(layout); //Titolo lim.gridx=0; lim.gridy=0; layout.setConstraints(title,lim); add(title); //Etichetta lunghezza stringa lim.gridx=0; lim.gridy=1; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(tlunghezza,lim); add(tlunghezza); //Etichetta lunghezza massima lim.gridx=0; lim.gridy=2; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(max,lim); add(max); //Campo lunghezza massima lim.gridx=0; lim.gridy=2; lim.anchor=GridBagConstraints.CENTER; layout.setConstraints(gmaxlen,lim); add(gmaxlen); //Etichetta lunghezza minima lim.gridx=0; lim.gridy=3; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(min,lim); add(min); //Campo lunghezza minima lim.gridx=0; lim.gridy=3; lim.anchor=GridBagConstraints.CENTER; layout.setConstraints(gminlen,lim); add(gminlen); //Separatore 1 Label s1=new Label("________________________________________________________________________"); lim.gridx=0; lim.gridy=4; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(s1,lim); add(s1); //Etichetta caratteri lim.gridx=0; lim.gridy=5; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(ecaratteri,lim); add(ecaratteri); //Numeri lim.gridx=0; lim.gridy=6; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(numeri,lim); add(numeri); //Lettere minuscole lim.gridx=0; lim.gridy=7; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(minuscole,lim); add(minuscole); //Lettere maiuscole lim.gridx=0; lim.gridy=8; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(maiuscole,lim); add(maiuscole); //Caratteri speciali lim.gridx=0; lim.gridy=9; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(speciali,lim); add(speciali); //Spazio lim.gridx=0; lim.gridy=10; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(spazio,lim); add(spazio); //Personalizzato lim.gridx=0; lim.gridy=11; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(personalizzato,lim); add(personalizzato); //Testo personalizzato lim.gridx=0; lim.gridy=11; lim.anchor=GridBagConstraints.EAST; layout.setConstraints(tpersonalizzato,lim); add(tpersonalizzato); //Separatore 2 Label s2=new Label("________________________________________________________________________"); lim.gridx=0; lim.gridy=12; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(s2,lim); add(s2); //Pulsante Genera genera.addActionListener(new Genera()); lim.gridx=0; lim.gridy=13; lim.anchor=GridBagConstraints.EAST; layout.setConstraints(genera,lim); add(genera); //Output gout.setEditable(false); lim.gridx=0; lim.gridy=13; lim.anchor=GridBagConstraints.WEST; layout.setConstraints(gout,lim); add(gout); } public class Genera implements ActionListener { public void actionPerformed(ActionEvent evt) { int max_lenght=Integer.parseInt(gmaxlen.getText()); int min_lenght=Integer.parseInt(gminlen.getText()); String src=null; if(numeri.isSelected()){src="0123456789";} if(minuscole.isSelected()){src=src+"abcdefghijklmnopqrstuvwxyz";} if(maiuscole.isSelected()){src=src+"ABCDEFGHIJKLMNOPQRSTUVWXYZ";} if(speciali.isSelected()){src=src+"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}";} if(spazio.isSelected()){src=src+" ";} if(personalizzato.isSelected()){src=src+tpersonalizzato.getText();} char[] src_array=null; int iter; for(iter=0;iter<src.length();iter++){ src_array[iter]=src.charAt(iter); } int out_lenght=(int)((max_lenght-min_lenght)*Math.random()+min_lenght); int iter2; int rand; String out=null; char rand_char; String s_rand_char; for(iter2=0;iter2<out_lenght;++iter2){ rand=(int)(Math.random()*src.length()); rand_char=src_array[rand]; s_rand_char=Character.toString(rand_char); if(iter2==0){out=s_rand_char;} else{out=out+s_rand_char;} } gout.setText(out); } } public static void main(String[] args) { new StringaCasuale(); } }![]()
grazie a chiunque risponda ciao!!!![]()

Rispondi quotando
