Reputation: 33
I am working on a project that I will be presenting. So far I have been doing well, but I have ran into a few problems that I can't figure out. I am building a basic GUI. There are 4 sections to choose from. The last menu option does not work. The drop down menu works, but I can't select an option. There is a small black arrow indicating a submenu? I am having trouble finding what is the cause of that.
Also the GUI only saves one selection at a time. I need it to save all the choices and add everything at the end. What is the best way to accomplish that? If anyone has any input on how to improve my project all advice is welcome! Thank you all for your time and effort. It is much appreciated.
package guiproject;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Guiproject implements ActionListener{
JLabel jlabel;
Guiproject(){
JFrame frame = new JFrame("Vehicle Choices");//create new JFrame container
frame.setLayout(new FlowLayout()); //specify flowlayout for the layout manager
frame.setSize(570,400); // gives the frame its size
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Terminates the program when user closes the application
jlabel = new JLabel();//creates a menu to display menu selections
JMenuBar menu = new JMenuBar();//creates menu bar
JMenu car = new JMenu("Choose Car");//creates field menu items.
JMenuItem sx240 = new JMenuItem("Nissan 240sx = $8,000$");//creates field menu items.
JMenuItem bmw = new JMenuItem(" BMW M5 = $15,000 ");//creates field menu items.
JMenuItem V8 = new JMenuItem(" Corvette = $22,000 ");//creates field menu items.
JMenuItem sky = new JMenuItem(" Skyline = $28,000 ");//creates field menu items.
JMenuItem ford = new JMenuItem(" Shelby Mustang = $25,500 ");//creates field menu items.
car.add(sx240); //add menu items to menu
car.add(bmw);//add menu items to menu
car.add(V8);//add menu items to menu
car.add(sky);//add menu items to menu
car.add(ford);//add menu items to menu
menu.add(car);
JMenu color = new JMenu("Choose Paint Color"); //creates the color selection option
JMenuItem red = new JMenuItem(" Cherry Red = $800.00 "); //craeted color choices
JMenuItem matte = new JMenuItem(" Matte Black = $1,700");//craeted color choices
JMenuItem pink = new JMenuItem(" Hot Pink = $975.00 ");//craeted color choices
JMenuItem purp = new JMenuItem (" Purple = $825.00 ");//craeted color choices
JMenuItem green = new JMenuItem(" Forest Green = $600.00");//craeted color choices
color.add(red); //adds choices to the menu
color.add(matte);//adds choices to the menu
color.add(pink);//adds choices to the menu
color.add(purp);//adds choices to the menu
color.add(green);//adds choices to the menu
menu.add(color);
JMenu drop = new JMenu("Choose Suspension type"); //creates option for suspension
JMenuItem stock = new JMenuItem(" Keep it Stock = $0.0 ");//creates menu choice
JMenuItem spring = new JMenuItem(" Basic Springs and Shocks = $ 150.00 ");//creates menu choice
JMenuItem coil = new JMenuItem(" Coilovers = $1,600 ");//creates menu choice
JMenuItem air = new JMenuItem(" Air Suspension = $ 3,000 ");//creates menu choice
JMenuItem low = new JMenuItem(" Lowering Springs = $575.00 ");//creates menu choice
drop.add(stock);//adds choice to the menu
drop.add(spring);//adds choice to the menu
drop.add(coil);//adds choice to the menu
drop.add(air);//adds choice to the menu
drop.add(low);//adds choice to the menu
menu.add(drop);//adds choice to the menu
JMenu engine = new JMenu("Choose performance parts"); //creates option for menu
JMenuItem stock1 = new JMenu(" Keep It Stock = $0.0 "); //creates menu choice
JMenuItem cam = new JMenu(" Upgrade Camshafts $475.00 ");//creates menu choice
JMenuItem turbo = new JMenu(" Turbo = $1,250.00 ");//creates menu choice
JMenuItem sup = new JMenu(" Supercharger = $2,800.00 ");//creates menu choice
JMenuItem twin = new JMenu(" Twin Turbo = $2,200.00 ");//creates menu choice
engine.add(stock1);//adds choice to the menu
engine.add(cam);//adds choice to the menu
engine.add(turbo);//adds choice to the menu
engine.add(sup);//adds choice to the menu
engine.add(twin);//adds choice to the menu
menu.add(engine);//adds choice to the menu
sx240.addActionListener(this); //adds action listener to menu items
bmw.addActionListener(this);//adds action listener to menu items
V8.addActionListener(this);//adds action listener to menu items
sky.addActionListener(this);//adds action listener to menu items
ford.addActionListener(this);//adds action listener to menu items
red.addActionListener(this);//adds action listener to menu items
matte.addActionListener(this);//adds action listener to menu items
pink.addActionListener(this);//adds action listener to menu items
purp.addActionListener(this);//adds action listener to menu items
green.addActionListener(this);//adds action listener to menu items
stock.addActionListener(this);//adds action listener to menu items
spring.addActionListener(this);//adds action listener to menu items
coil.addActionListener(this);//adds action listener to menu items
air.addActionListener(this);//adds action listener to menu items
low.addActionListener(this);//adds action listener to menu items
stock1.addActionListener(this);//adds action listener to menu items
cam.addActionListener(this);//adds action listener to menu items
turbo.addActionListener(this);//adds action listener to menu items
sup.addActionListener(this);//adds action listener to menu items
twin.addActionListener(this);//adds action listener to menu items
frame.add(jlabel); //adds label to content pane
frame.setJMenuBar(menu);//adds menu bar to frame
frame.setVisible(true);//displays frame
}
public void actionPerformed(ActionEvent ae){// handles menu item action events
String string = ae.getActionCommand();// gets action command to menu section
String string1 = ae.getActionCommand();
if(string.equals("Exit"))System.exit(0);//Exits the program when user chooses exit.
jlabel.setText(string+ " Selected ");//displays selected choice
jlabel.setText(string1+ " selected ");
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Guiproject();
}
});
}
}
Upvotes: 0
Views: 51
Reputation: 324197
JMenuItem stock1 = new JMenu(" Keep It Stock = $0.0 "); //creates menu choice
JMenuItem cam = new JMenu(" Upgrade Camshafts $475.00 ");//creates menu choice
JMenuItem turbo = new JMenu(" Turbo = $1,250.00 ");//creates menu choice
JMenuItem sup = new JMenu(" Supercharger = $2,800.00 ");//creates menu choice
JMenuItem twin = new JMenu(" Twin Turbo = $2,200.00 ");//creates menu choice
You define your objects a JMenuItem
, but you are creating a JMenu
. Since JMenu
extends JMenuItem
, this is legal, but not what you want.
You want:
JMenuItem stock1 = new JMenuItem(" Keep It Stock = $0.0 "); //creates menu choice
JMenuItem cam = new JMenuItem(" Upgrade Camshafts $475.00 ");//creates menu choice
JMenuItem turbo = new JMenuItem(" Turbo = $1,250.00 ");//creates menu choice
JMenuItem sup = new JMenuItem(" Supercharger = $2,800.00 ");//creates menu choice
JMenuItem twin = new JMenuItem(" Twin Turbo = $2,200.00 ");//creates menu choice
Upvotes: 1