My question is how to:
Add a menu bar to the program with a File menu. In the File menu, add a submenu (JMenuItem) called About. When the user clicks on the About menu item, display a JOptionPane message dialog that contains your name
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class JLottery2 extends JFrame implements ItemListener { final int NUM = 31; final int PICKS = 6; FlowLayout flow = new FlowLayout(); JLabel greeting = new JLabel ("Play the lottery - Select " + PICKS + " numbers"); Font serifBold = new Font("Serif", Font.BOLD, 20); JCheckBox[] choice = new JCheckBox[NUM]; JLabel[] label = new JLabel[NUM]; String winningsString = "The winning numbers are: "; String youPickedString = "You chose: "; JTextArea outArea = new JTextArea(""); int x, y; int[] ran = new int[PICKS]; int[] chosen = new int[PICKS]; int chosenCount = 0; int matches = 0; int[] winDollars = {0, 0, 0, 100, 10000, 50000, 1000000}; public JLottery2() { super("Lottery Game"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(flow); add(greeting); greeting.setFont(serifBold); for(x = 0; x < NUM; ++x) { choice[x] = new JCheckBox(); label[x] = new JLabel(" " + x); add(label[x]); add(choice[x]); choice[x].addItemListener(this); } add(outArea); for(x = 0; x < PICKS; ++x) { ran[x] = (int)Math.floor(Math.random()*NUM); for(y = 0; y < x; ++y) if(ran[x] == ran[y]) --x; } for(x = 0; x < PICKS; ++x) { winningsString += ran[x] + " "; } // System.out.println(winningsString); // Useful while testing } public static void main(String[] arguments) { JLottery2 lotFrame = new JLottery2(); lotFrame.setSize(380,300); lotFrame.setVisible(true); } public void itemStateChanged(ItemEvent check) { Object source = check.getItem(); if(chosenCount == PICKS) { for(x= 0; x < NUM; ++x) { if(source == choice[x]) choice[x].setSelected(false); } } else { for(x= 0; x < NUM; ++x) { if(source == choice[x]) { int select = check.getStateChange(); if(select == ItemEvent.SELECTED) { chosen[chosenCount] = x; youPickedString += x + " "; ++chosenCount; } } } if(chosenCount == PICKS) { for(x = 0; x < PICKS; ++x) for(y = 0; y < PICKS; ++y) if(chosen[x] == ran[y]) ++matches; outArea.append(winningsString); outArea.append("\n"); outArea.append(youPickedString); outArea.append("\nYou matched " + matches + " numbers"); outArea.append("\nYou win $" + winDollars[matches]); } } } }
Here is an example that prompt the user to enter the name which is to shown on menuitem selection.
import java.awt.*; import java.util.*; import javax.swing.*; import java.awt.event.*; public class JLottery2 extends JFrame implements ItemListener { final int NUM = 31; final int PICKS = 6; FlowLayout flow = new FlowLayout(); JLabel greeting = new JLabel ("Play the lottery - Select " + PICKS + " numbers"); Font serifBold = new Font("Serif", Font.BOLD, 20); JCheckBox[] choice = new JCheckBox[NUM]; JLabel[] label = new JLabel[NUM]; String winningsString = "The winning numbers are: "; String youPickedString = "You chose: "; JTextArea outArea = new JTextArea(""); int x, y; int[] ran = new int[PICKS]; int[] chosen = new int[PICKS]; int chosenCount = 0; int matches = 0; int[] winDollars = {0, 0, 0, 100, 10000, 50000, 1000000}; public JLottery2(final String str) { super("Lottery Game"); JMenuBar menubar = new JMenuBar(); JMenu filemenu = new JMenu("File"); JMenuItem fileItem = new JMenuItem("About"); fileItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Welcome "+str); } }); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(flow); add(greeting); greeting.setFont(serifBold); for(x = 0; x < NUM; ++x) { choice[x] = new JCheckBox(); label[x] = new JLabel(" " + x); add(label[x]); add(choice[x]); choice[x].addItemListener(this); } filemenu.add(fileItem); menubar.add(filemenu); setJMenuBar(menubar); add(outArea); for(x = 0; x < PICKS; ++x) { ran[x] = (int)Math.floor(Math.random()*NUM); for(y = 0; y < x; ++y) if(ran[x] == ran[y]) --x; } for(x = 0; x < PICKS; ++x) { winningsString += ran[x] + " "; } } public static void main(String[] arguments) { Scanner input=new Scanner(System.in); System.out.print("Enter Name: "); String str=input.nextLine(); JLottery2 lotFrame = new JLottery2(str); lotFrame.setSize(380,300); lotFrame.setVisible(true); } public void itemStateChanged(ItemEvent check) { Object source = check.getItem(); if(chosenCount == PICKS) { for(x= 0; x < NUM; ++x) { if(source == choice[x]) choice[x].setSelected(false); } } else { for(x= 0; x < NUM; ++x) { if(source == choice[x]) { int select = check.getStateChange(); if(select == ItemEvent.SELECTED) { chosen[chosenCount] = x; youPickedString += x + " "; ++chosenCount; } } } if(chosenCount == PICKS) { for(x = 0; x < PICKS; ++x) for(y = 0; y < PICKS; ++y) if(chosen[x] == ran[y]) ++matches; outArea.append(winningsString); outArea.append("\n"); outArea.append(youPickedString); outArea.append("\nYou matched " + matches + " numbers"); outArea.append("\nYou win $" + winDollars[matches]); } } } }
Ads