PDA

Visualizza versione completa : [Java] Eccezione NullPointerException


GiulioCesare
31-08-2005, 23.47.45
Salve ragazzi ho un piccolo problema con un'applicazione grafica, il programma dopo la pressione del pulsante deve inserire in una casella di testo un numero casuale, questo non accade e mi viene segnalato l'errore: java.lang.NullPointerException , quando nel metodo actionPerformed cerco di fare questo textField.setText(z), comunque posto il codice con la speranza che qualcuno mi aiuti.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.lang.*;
import java.math.*;

public class numeri4
{
public static void main(String[] args)
{
ButtonFrame frame = new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.show();
}
}

class ButtonFrame extends JFrame
{
public ButtonFrame()
{
setTitle("Applicazione");
setSize(400,400);

ButtonPanel panel = new ButtonPanel();
Container contentPane=getContentPane();
contentPane.add(panel);

ButtonPanel panel2 = new ButtonPanel(1);
Container pane=getContentPane();
pane.add(panel2, BorderLayout.SOUTH);
}
}

class ButtonPanel extends JPanel
{
public ButtonPanel()
{
JLabel label = new JLabel("Numeri");
JTextField testo = new JTextField(10);

add(label);
add(testo);

Azione a = new Azione(testo);
}

public ButtonPanel(int v)
{
JButton estrai = new JButton("Estrai");
add(estrai);
Azione b = new Azione();
estrai.addActionListener(b);
}

public ButtonPanel(String n)
{
System.out.println("Terzo Costruttore");
}

int calcola()
{
return (int) (Math.random() * 100);
}
}

class Azione implements ActionListener
{

ButtonPanel x = new ButtonPanel("XXX");
private JTextField textField;

public Azione(JTextField aTextField)
{
textField = aTextField;
}

public Azione()
{
System.out.println("Costruttore Listener");
}

public void actionPerformed(ActionEvent event)
{
String command= event.getActionCommand();
int s;
String z;

if(command.equals("Estrai"))
{
s=x.calcola();
z=Integer.toString(s);
textField.setText(z);
}
}
}