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");
}
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.