想让我的菜单在子类中

时间:2013-10-20 20:50:53

标签: java jmenubar

这是我的主要内容:

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


public class GUI {

public static void main(String[] args){


    JFrame cF = new JFrame("HANGMAN");

    cF.setContentPane(new Hangman());
   // cF.setSize(700, 600);
    cF.pack();
    cF.setLocationRelativeTo(null);
    cF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    cF.setVisible(true);
   }
}

我想在这个子类中创建JMenuBar,但是当我编译并运行时,菜单不会被创建。如何在我的主屏幕中的JFrame上创建菜单?相当一个菜鸟,我不知道它是如何工作的,所以如果有人可以帮助我会很棒。

import javax.swing.*;

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.FileReader;

public class Hangman extends JPanel {

JTextField guessesField, missField, statusField, guessField;
JPanel guessPanel, missPanel, statusPanel;

int gu = 0 ;

public Hangman(){




    setLayout(new GridLayout(4, 1, 10, 15));


    /*--Guesses Left--*/
    JPanel guessPanel = new JPanel();


    JLabel guessLabel = new JLabel("Guesses Left: " + gu);
    //JTextField guessField = new JTextField(1);
    //guessField.setEditable(false);
    //guessField.setText("");

    guessPanel.add(guessLabel);
    //guessPanel.add(guessField);


    add(guessPanel); 

    /*--Current Status---*/
    JPanel statusPanel = new JPanel();

    JLabel statusLabel = new JLabel("Current Status:");
    statusPanel.add(statusLabel);
    statusField = new JTextField(10);
    statusField.setText("_ _ _ _ _ _ _ _");
    statusField.setEditable(false);

    add(statusPanel); 
    statusPanel.add(statusField);

    /*--Guess---*/
    JPanel guessesPanel = new JPanel();

    JLabel guessesLabel = new JLabel("Guess:" );
    guessesPanel.add(guessesLabel);
    guessesField = new JTextField(1);


    guessesPanel.add(guessesField);

    add(guessesPanel); 

    /*--Misses---*/
    JPanel missPanel = new JPanel();

    JLabel missLabel = new JLabel("Misses:");
    missField = new JTextField(10);
    missField.setEditable(false);
    missField.setText("_ _ _ _ _ _ _ _");
    missPanel.add(missLabel);
    missPanel.add(missField);
    add(missPanel); 
}
    public void menubar(JFrame cF){
    /*--Menu--*/
    JMenuBar menubar = new JMenuBar();
    cF.setJMenuBar(menubar);

    JMenu start = new JMenu("Start");
    menubar.add(start);
    JMenuItem startg = new JMenuItem("Start");
    JMenuItem exit = new JMenuItem("Exit");

    start.add(startg);
    start.add(exit);

    JMenu options = new JMenu("Options");
    menubar.add(options);
    JRadioButtonMenuItem hard = new JRadioButtonMenuItem("Hard");
    JRadioButtonMenuItem medium = new JRadioButtonMenuItem("Medium");
    JRadioButtonMenuItem easy = new JRadioButtonMenuItem("Easy");

    ButtonGroup bg = new ButtonGroup();
    bg.add(hard);
    bg.add(medium);
    bg.add(easy);

    options.add(hard);
    options.add(medium);
    options.add(easy);


    /*--AllActionListeners--*/
    startg.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });

    exit.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });



    hard.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {

        }
    });

    medium.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {

        }
    });

    easy.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {

        }
    });




}



}

1 个答案:

答案 0 :(得分:2)

您已创建menubar(JFrame cF)方法但未在任何地方使用它。

尝试这种方式

JFrame cF = new JFrame("HANGMAN");

Hangman h = new Hangman();
cF.setContentPane(h);
h.menubar(cF);
// cF.setSize(700, 600);
cF.pack();
cF.setLocationRelativeTo(null);
cF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cF.setVisible(true);