Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

why this code does not work because of the nullpointerexcept??? how to change? j

ID: 3788085 • Letter: W

Question

why this code does not work because of the nullpointerexcept??? how to change? java gui

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

public class newMoviePanel extends JPanel
{
   private JLabel titleInputLabel, titleOutputLabel, titleResultLabel;
   private JLabel movieLabel;
   private JLabel yearLabel, yearResultLabel;
   private JLabel genreLabel, genreResultLabel;
   private JLabel typeLabel, typeResultLabel;
   private JTextField movie, title;
   String[] year = {"1999", "1997", "1977", "1985"};
   String[] genre = {"action", "drama", "documentray", "horror", "kids", "mystery", "science fiction"};
   String[] type = {"VHS", "LaserDisc", "D.V.D"};
   private JComboBox yearList, genreList, typeList;
   private JLabel releaseLabel, releaseResultLabel;
   private JRadioButton yes, no;
   private Button submitButton, resetButton;
  
   public newMoviePanel()
   {
//A text field prefilled with an auto generated movie id
movieLabel = new JLabel("An auto generated movie id: 19960207");
add(movieLabel);

//A text field for title
titleInputLabel = new JLabel("1.Enter the movie title:");
titleOutputLabel = new JLabel("1.Movie Title:");
titleResultLabel = new JLabel("---");
title = new JTextField(10);
title.addActionListener(new TempListener());
add(titleInputLabel);
add(title);

//A dropdown for movie's year
yearLabel = new JLabel("2.Choose the movie's year:");
yearResultLabel = new JLabel();
yearList = new JComboBox(year);
yearList.addActionListener(new TempListener());
add(yearLabel);
add(yearList);

//A dropdown for movie's genre
genreLabel = new JLabel("3.Choose the movie's genre:");
genreResultLabel = new JLabel();
genreList = new JComboBox(genre);
genreList.addActionListener(new TempListener());
add(genreLabel);
add(genreList);

//A dropdown for movie's type
typeLabel = new JLabel("4.Choose the movie's type: ");
typeResultLabel = new JLabel();
typeList = new JComboBox(type);
typeList.addActionListener(new TempListener());
add(typeLabel);
add(typeList);

//Radio buttons for new release
releaseLabel = new JLabel("5.Is the movie a new release?");
yes = new JRadioButton("YES",true);
no = new JRadioButton("NO",false);
ButtonGroup group = new ButtonGroup();
group.add(yes);
group.add(no);
yes.addActionListener(new TempListener());
no.addActionListener(new TempListener());
add(releaseLabel);
add(yes);
add(no);

//A sumbit button
submitButton = new Button("Submit");
submitButton.addActionListener(new TempListener());

//A reset button
resetButton = new Button("Reset");
resetButton.addActionListener(new TempListener());

//add these result labels to on the panel
add(submitButton);
add(resetButton);
add(titleOutputLabel);
add(titleResultLabel);
add(yearResultLabel);
add(genreResultLabel);
add(typeResultLabel);
add(releaseResultLabel);

setPreferredSize(new Dimension(500,400));
   }
  
   private class TempListener implements ActionListener
   {
public void actionPerformed(ActionEvent event)
{
  
   String choose = event.getActionCommand();
   if (choose == "Submit")
   {

//get the member name and add to the Label for name
String titleText = title.getText();
titleResultLabel.setText("1." + titleText);

if(event.getSource() == yearList)
{
   JComboBox select = (JComboBox)event.getSource();
   String result = (String)select.getSelectedItem();
   switch (result)
   {
case "1999":
   yearResultLabel.setText("2.This movie is 1999.");
   break;
case "1997":
   yearResultLabel.setText("2.This movie is 1997.");
   break;
case "1977":
   yearResultLabel.setText("2.This movie is 1977.");
   break;
default:
   yearResultLabel.setText("2.This movie is 1985.");
  
   }
}

if(event.getSource() == genreList)
{
   JComboBox select = (JComboBox)event.getSource();
   String result = (String)select.getSelectedItem();
   switch (result)
   {
case "action":
   genreResultLabel.setText("3.This movie's genre is action.");
   break;
case "drama":
   genreResultLabel.setText("3.This movie's genre is drama.");
   break;
case "documentray":
   genreResultLabel.setText("3.This movie's genre is documentray.");
   break;
case "horror":
   genreResultLabel.setText("3.This movie's genre is horror.");
   break;
case "kids":
   genreResultLabel.setText("3.This movie's genre is kids.");
   break;
case "mystery":
   genreResultLabel.setText("3.This movie's genre is mystery.");
   break;
default:
   genreResultLabel.setText("3.This movie's genre is science fiction.");

   }
}
  
if(event.getSource() == typeList)
{
   JComboBox select = (JComboBox)event.getSource();
   String result = (String)select.getSelectedItem();
   switch (result)
   {
case "VHS":
   typeResultLabel.setText("4.This movie's type is VHS.");
   break;
case "LaserDisc":
   typeResultLabel.setText("4.This movie's type is LaserDisc.");
   break;
default:
   typeResultLabel.setText("4.This movie's type is D.V.D.");
   }
}

Object source = event.getSource();
if (source == yes)
   releaseResultLabel.setText("5.This movie is a new release.");
else
   releaseResultLabel.setText("5.This movie is not a new release.");
   }
  
   if (choose == "Reset")
   {
titleResultLabel.setText("0");
yearResultLabel.setText("0");
genreResultLabel.setText("0");
typeResultLabel.setText("0");
releaseResultLabel.setText("0");

   }

}
  
   }
  
}

import javax.swing.JFrame;

public class newMovie
{
   public static void main(String[] args)
   {
JFrame frame = new JFrame("New Movie");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

newMoviePanel panel = new newMoviePanel();

frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
   }
}

Explanation / Answer


Hi,
releaseResultLabel was just declared in your code. It needs to be initialized before you use it.
So I initialized it with JLabel object, and your application now works fine.


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class newMoviePanel extends JPanel
{
private JLabel titleInputLabel, titleOutputLabel, titleResultLabel;
private JLabel movieLabel;
private JLabel yearLabel, yearResultLabel;
private JLabel genreLabel, genreResultLabel;
private JLabel typeLabel, typeResultLabel;
private JTextField movie, title;
String[] year = {"1999", "1997", "1977", "1985"};
String[] genre = {"action", "drama", "documentray", "horror", "kids", "mystery", "science fiction"};
String[] type = {"VHS", "LaserDisc", "D.V.D"};
private JComboBox yearList, genreList, typeList;
private JLabel releaseLabel, releaseResultLabel;
private JRadioButton yes, no;
private Button submitButton, resetButton;
  
public JavaApplication13()
{
releaseResultLabel =new JLabel();
//A text field prefilled with an auto generated movie id
movieLabel = new JLabel("An auto generated movie id: 19960207");
add(movieLabel);
//A text field for title
titleInputLabel = new JLabel("1.Enter the movie title:");
titleOutputLabel = new JLabel("1.Movie Title:");
titleResultLabel = new JLabel("---");
title = new JTextField(10);
title.addActionListener(new TempListener());
add(titleInputLabel);
add(title);

//A dropdown for movie's year
yearLabel = new JLabel("2.Choose the movie's year:");
yearResultLabel = new JLabel();
yearList = new JComboBox(year);
yearList.addActionListener(new TempListener());
add(yearLabel);
add(yearList);

//A dropdown for movie's genre
genreLabel = new JLabel("3.Choose the movie's genre:");
genreResultLabel = new JLabel();
genreList = new JComboBox(genre);
genreList.addActionListener(new TempListener());
add(genreLabel);
add(genreList);

//A dropdown for movie's type
typeLabel = new JLabel("4.Choose the movie's type: ");
typeResultLabel = new JLabel();
typeList = new JComboBox(type);
typeList.addActionListener(new TempListener());
add(typeLabel);
add(typeList);

//Radio buttons for new release
releaseLabel = new JLabel("5.Is the movie a new release?");
yes = new JRadioButton("YES",true);
no = new JRadioButton("NO",false);
ButtonGroup group = new ButtonGroup();
group.add(yes);
group.add(no);
yes.addActionListener(new TempListener());
no.addActionListener(new TempListener());
add(releaseLabel);
add(yes);
add(no);

//A sumbit button
submitButton = new Button("Submit");
submitButton.addActionListener(new TempListener());

//A reset button
resetButton = new Button("Reset");
resetButton.addActionListener(new TempListener());

//add these result labels to on the panel
add(submitButton);
add(resetButton);   
add(titleOutputLabel);
add(titleResultLabel);
add(yearResultLabel);
add(genreResultLabel);   
add(typeResultLabel);
add(releaseResultLabel);
setPreferredSize(new Dimension(500,400));
}
  
private class TempListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
  
String choose = event.getActionCommand();
if (choose == "Submit")
{
//get the member name and add to the Label for name
String titleText = title.getText();
titleResultLabel.setText("1." + titleText);

if(event.getSource() == yearList)
{
JComboBox select = (JComboBox)event.getSource();
String result = (String)select.getSelectedItem();
switch (result)
{
case "1999":
yearResultLabel.setText("2.This movie is 1999.");
break;
case "1997":
yearResultLabel.setText("2.This movie is 1997.");
break;
case "1977":
yearResultLabel.setText("2.This movie is 1977.");
break;
default:
yearResultLabel.setText("2.This movie is 1985.");
  
}
}

if(event.getSource() == genreList)
{
JComboBox select = (JComboBox)event.getSource();
String result = (String)select.getSelectedItem();
switch (result)
{
case "action":
genreResultLabel.setText("3.This movie's genre is action.");
break;
case "drama":
genreResultLabel.setText("3.This movie's genre is drama.");
break;
case "documentray":
genreResultLabel.setText("3.This movie's genre is documentray.");
break;
case "horror":
genreResultLabel.setText("3.This movie's genre is horror.");
break;
case "kids":
genreResultLabel.setText("3.This movie's genre is kids.");
break;
case "mystery":
genreResultLabel.setText("3.This movie's genre is mystery.");
break;
default:
genreResultLabel.setText("3.This movie's genre is science fiction.");

}
}
  
if(event.getSource() == typeList)
{
JComboBox select = (JComboBox)event.getSource();
String result = (String)select.getSelectedItem();
switch (result)
{
case "VHS":
typeResultLabel.setText("4.This movie's type is VHS.");
break;
case "LaserDisc":
typeResultLabel.setText("4.This movie's type is LaserDisc.");
break;
default:
typeResultLabel.setText("4.This movie's type is D.V.D.");
}
}

Object source = event.getSource();
if (source == yes)
releaseResultLabel.setText("5.This movie is a new release.");
else
releaseResultLabel.setText("5.This movie is not a new release.");
}
  
if (choose == "Reset")
{
titleResultLabel.setText("0");
yearResultLabel.setText("0");
genreResultLabel.setText("0");
typeResultLabel.setText("0");
releaseResultLabel.setText("0");
}

}
  
}
  
}