Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Hi all! NULL POINTER EXCEPTION on a simple JTextArea !

$
0
0
Hi all!
The following exception has been given by my code :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at MainControlMarioGUI.actionPerformed(MainControlMarioGUI.java:200)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

Here is the code : from the debugging I've seen that the variable AreaDiTesto
doesn't work just when I've tried to use the listener and to print out in the Jtextarea
as in the following line:

AreaDiTesto.append(evt.getActionCommand() + " Selezionato \n");

here it follows the complete code...... I suspect that "AreaDiTesto" becomes "null"
because it has been overwritten by do not understand how to correct it !!!!!

public class MainControlMarioGUI extends JFrame implements ActionListener {

// Dichiarazione di variabili
public JPanel AreaDiGioco;
public Canvas Tela;
public JTextArea AreaDiTesto;
public JScrollPane AreaTestoLunga;
public JMenuBar MenuBar;
public JMenu MenuTendina, JMenu_ApriGioco, JMenu_SalvaGioco, MenuAbout;
public JMenuItem MenuItem_NuovoGioco,
ApriPercorsoPredefinito, JMenuItem_ApriDaPercorso,
JMenuItem_SalvaPercorsoPredefinito, JMenuItem_SalvaInPercorso,
MenuItem_EsciDaGioco, JMenuItem_About;
public JPopupMenu.Separator jSeparator1,jSeparator2,jSeparator3, jSeparator4,jSeparator5;
int PopUpAvvio, PopUpUscita;


/**
* La classe crea un JFrame MainControlMarioGUI
*
*/
public MainControlMarioGUI() {

inizializzoComponenti();
}

/**
* Questo metodo è chiamato dal costruttore che inizializza tutti i principali componenti del Frame:
* un JPanel comprensivo di Canvas come area di gioco (nominate ripettivamente "AreaDiGioco" e "Tela"),
* una JmenuBar per l'interazione con un file che contiene i dati della partita,
* una JTextArea per la visualizzazione di ciò che accade ai file-partita creati (Apri, Salva, Esci).
* @param AreaDiGioco
* @param //AreadiTesto
*/
@SuppressWarnings("unchecked")

/* Il Metodo inizializzoComponenti non restituisce alcun valore, ma aggiunge
*
*
* */

private void inizializzoComponenti() {
GridBagConstraints gridBagConstraints;

JPanel AreaDiGioco = new JPanel();
Canvas Tela = new Canvas();
JScrollPane AreaTestoLunga = new JScrollPane();
JTextArea AreaDiTesto = new JTextArea();
//JTextArea GUIAreaDiTesto= new JTextArea();
JMenuBar MenuBar = new JMenuBar();
JMenu MenuTendina = new JMenu();
JMenuItem MenuItem_NuovoGioco = new JMenuItem();
JPopupMenu.Separator jSeparator1 = new JPopupMenu.Separator();
JMenu JMenu_ApriGioco = new JMenu();
JMenuItem JMenuItem_ApriPercorsoPredefinito = new JMenuItem();
JPopupMenu.Separator jSeparator2 = new JPopupMenu.Separator();
JMenuItem JMenuItem_ApriDaPercorso = new JMenuItem();
JPopupMenu.Separator jSeparator3 = new JPopupMenu.Separator();
JMenu JMenu_SalvaGioco = new JMenu();
JMenuItem JMenuItem_SalvaPercorsoPredefinito = new JMenuItem();
JPopupMenu.Separator jSeparator4 = new JPopupMenu.Separator();
JMenuItem JMenuItem_SalvaInPercorso = new JMenuItem();
JPopupMenu.Separator jSeparator5 = new JPopupMenu.Separator();
JMenuItem MenuItem_EsciDaGioco = new JMenuItem();
JMenu MenuAbout = new JMenu();
JMenuItem JMenuItem_About = new JMenuItem();


setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("Pantera 1.0 - Progetto di Mario Profumo matr. 1506204");
setMinimumSize(new Dimension(1200, 600));
setName("frame");
setResizable(false);
getContentPane().setLayout(new GridBagLayout());

AreaDiGioco.setBackground(new Color(204, 255, 255));
AreaDiGioco.setAlignmentX(0.0F);
AreaDiGioco.setAlignmentY(0.0F);
AreaDiGioco.setMaximumSize(new Dimension(800, 600));
AreaDiGioco.setMinimumSize(new Dimension(800, 600));

GroupLayout AreaDiGiocoLayout = new GroupLayout(AreaDiGioco);
AreaDiGioco.setLayout(AreaDiGiocoLayout);
AreaDiGiocoLayout.setHorizontalGroup(
AreaDiGiocoLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGap(0, 800, Short.MAX_VALUE)
.addGroup(AreaDiGiocoLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(Tela, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
AreaDiGiocoLayout.setVerticalGroup(
AreaDiGiocoLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGap(0, 610, Short.MAX_VALUE)
.addGroup(AreaDiGiocoLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(AreaDiGiocoLayout.createSequentialGroup()
.addComponent(Tela, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
);

gridBagConstraints = new GridBagConstraints();
gridBagConstraints.anchor = GridBagConstraints.FIRST_LINE_START;
getContentPane().add(AreaDiGioco, gridBagConstraints);

AreaTestoLunga.setMaximumSize(new Dimension(400, 600));
AreaTestoLunga.setMinimumSize(new Dimension(400, 600));
AreaTestoLunga.setPreferredSize(new Dimension(400, 600));

//JTextArea GUIAreaDiTesto = AreaDiTesto ;

AreaDiTesto.setColumns(20);
AreaDiTesto.setRows(5);
AreaDiTesto.setMaximumSize(new Dimension(400, 600));
AreaDiTesto.setMinimumSize(new Dimension(400, 600));
AreaDiTesto.setPreferredSize(new Dimension(400, 600));
AreaDiTesto.setRequestFocusEnabled(false);
AreaTestoLunga.setViewportView(AreaDiTesto);

getContentPane().add(AreaTestoLunga, new GridBagConstraints());


MenuTendina.setText("Controlli sul file di gioco");

MenuItem_NuovoGioco.setText("Nuova partita");
MenuItem_NuovoGioco.addActionListener(this);
MenuItem_NuovoGioco.setActionCommand("Avvia partita");
MenuTendina.add(MenuItem_NuovoGioco);
MenuTendina.add(jSeparator1);

JMenu_ApriGioco.setText("Apri partita");

JMenuItem_ApriPercorsoPredefinito.setText("apri da percorso predefinito");
JMenu_ApriGioco.add(JMenuItem_ApriPercorsoPredefinito);
JMenu_ApriGioco.add(jSeparator2);

JMenuItem_ApriDaPercorso.setText("apri da percorso specificato");
JMenu_ApriGioco.add(JMenuItem_ApriDaPercorso);

MenuTendina.add(JMenu_ApriGioco);
MenuTendina.add(jSeparator3);

JMenu_SalvaGioco.setText("Salva partita");

JMenuItem_SalvaPercorsoPredefinito.setText("salva da percorso predefinito");
JMenu_SalvaGioco.add(JMenuItem_SalvaPercorsoPredefinito);
JMenu_SalvaGioco.add(jSeparator4);

JMenuItem_SalvaInPercorso.setText("salva da percorso specificato");
JMenu_SalvaGioco.add(JMenuItem_SalvaInPercorso);

MenuTendina.add(JMenu_SalvaGioco);
MenuTendina.add(jSeparator5);

MenuItem_EsciDaGioco.setText("Esci da gioco");
//MenuItem_NuovoGioco.addActionListener(this);
MenuTendina.add(MenuItem_EsciDaGioco);

MenuBar.add(MenuTendina);

MenuAbout.setText(" A riguardo...");

JMenuItem_About.setText("Autore & ringraziamenti");
/*JMenuItem_About.addActionListener(new event.ActionListener() {
public void actionPerformed(ActionEvent evt) {
JMenuItem_AboutActionPerformed(evt);
}
}); */
MenuAbout.add(JMenuItem_About);

MenuBar.add(MenuAbout);

setJMenuBar(MenuBar);

//MenuItem_NuovoGioco.addActionListener(this);

pack();
}

// il metodo ActionPerformed della classe ActionListener svolge l'operazione desiderata.
// La super-classe ActionEvent (stesse API java.awt.event.*) ne gestisce l'attivazione
// il ciclo condizionale sul metodo getActionCommand proviene dalle stesse API appena menzionate
// e XXX fa quello che dice


public void actionPerformed(ActionEvent evt) {
// visualizza a video nella JTextArea le opzioni selezionate dai Jmenu e JmenuItem
// tramite il metodo Append di javax.swing.JtextArea
AreaDiTesto.append(evt.getActionCommand() + " Selezionato \n");

if(evt.getActionCommand().equals("Avvia partita")) { // confronto tra stringhe
// assegna JOptionPane.showConfirmDialog ad una variabile intera
// e ne fa un ciclo condizionale più interno
int PopUpAvvio = JOptionPane.showConfirmDialog(null,"Vuoi iniziare una nuova partita?");
// se premi l'opzione "YES" del pop-up apre un nuovo mondo virtuale
if (PopUpAvvio ==JOptionPane.YES_OPTION) {
// XXXX avvia un nuovo mando virtuale
}
if (PopUpAvvio ==JOptionPane.NO_OPTION) {
// se premi l'opzione "NO" del pop-up stampa la deselezione del JMenuItem "Avvia partita"
AreaDiTesto.append(evt.getActionCommand() + " Deselezionato \n");
}
} else if(evt.getActionCommand().equals("Ricarica partita predefinita")) { // confronto tra stringhe
JFileChooser chooser = new JFileChooser();
FileSystemView view = chooser.getFileSystemView();
// ci va la lettura del file partita
// XXX caricare così come è il file TXT - PerMostrareBarraDiNavigazione-inApri-&-Salva.txt
AreaDiTesto.append("Selezionato <Ricarica Partita> dal percorso "
+ view.getDefaultDirectory());
AreaDiTesto.append("\n");
} else if(evt.getActionCommand().equals("Ricarica partita da percorso")) { // confronto tra stringhe
// xxxx

} else if(evt.getActionCommand().equals("Salva percorso predefinito")) { // confronto tra stringhe
JFileChooser chooser = new JFileChooser();
FileSystemView view = chooser.getFileSystemView();
AreaDiTesto.append("Selezionato <Salva Partita> dal percorso " + view.getDefaultDirectory());
AreaDiTesto.append("\n");
} else if(evt.getActionCommand().equals("Salva percorso specificato")) { // confronto tra stringhe
// xxxx

} else if(evt.getActionCommand().equals("Chiudi")) { // confronto tra stringhe
// assegna JOptionPane.showConfirmDialog ad una variabile intera
// e ne fa un ciclo condizionale più interno
int PopUpUscita = JOptionPane.showConfirmDialog(null,"Vuoi realmente chiudere il Gioco?");
//se premi l'opzione "YES" del pop-up chiude il JFrame principale
// sarebbe possibile far risalvare la partita prima di uscire
if (PopUpUscita ==JOptionPane.YES_OPTION) {
System.exit(0);
}
if (PopUpUscita ==JOptionPane.NO_OPTION) {
// se premi l'opzione "NO" del pop-up stampa la deselezione del JMenuItem "Chiudi"
AreaDiTesto.append(evt.getActionCommand() + " Deselezionato \n");
}
}
}




/**
* @param args the command line arguments
*/
public static void main(String args[]) {

// Schedula un job per il thread event-dispatching (tramite Java.awt anzichè Swing)
// che crea la Graphical User Interface principale. Questo programma cercherà,
// per quanto possibile, di usare l' API java.awt.* piuttosto che Javax.Swing
// per evitare problemi nella gestione del Java Visual thread.
EventQueue.invokeLater(new Runnable() {
public void run() {

try {new MainControlMarioGUI().setVisible(true);

}catch(Exception e) {
e.printStackTrace();
}
}
});
}

}

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>