добавить значок и текст в JMenu в процессе

Я работаю на качелях. Мне нужно создать главный экран, состоящий из 10 меню. Я создал форму с помощью JFrame и меню с помощью JMenu. Теперь это меню должно содержать как текст, так и изображение, а метод выполняемого действия должен вызываться при нажатии на меню, чтобы действие можно было выполнить при нажатии кнопки меню.

Прямо сейчас я делаю Jmenu с JMenuItem и значком на значке изображения, но мне нужно меню со значком и текстом

мой текущий код

public class MenuScreen  extends JFrame implements ActionListener{

             Container cp;
             JMenuBar menuBar;

             JLabel logo;
                public MenuScreen() {
                    super("");
                    cp=this.getContentPane();
                    cp.setBackground(Color.gray);

                    menuBar= new JMenuBar();
        logo=new JLabel(im);
                cp.add(logo);
                    logo.setBounds(100,80,500,350);

            helpmenu= new JMenu(" Help  ");
        homemenu=new JMenu(" Home  ");
        fieldsmenu= new JMenu(" Fields  ");
        backmenu= new JMenu(" Back  ");
        forwardmenu= new JMenu(" Forward  ");
        panelmenu= new JMenu(" Panel  ");
        searchmenu= new JMenu(" Search  ");
        quickmenu= new JMenu(" Quick  ");
        infomenu= new JMenu(" Info  ");
        exitmenu= new JMenu(" Exit  ");
        mastermenu= new JMenu(" Master  ");
        tarrifmenu= new JMenu(" Tarrif  "); 
        contactmenu= new JMenu(" Contact  ");
        webmenu= new JMenu(" Web  ");
        wordmenu= new JMenu(" Word  ");
        legaldictionarymenu= new JMenu(" LegalDictionary  ");
        budgetmenu=new JMenu(" Budget 2012 2013  ");
        memberdetailmenu= new JMenu(" Member Details  ");


        Font f1= new Font("Arial",Font.BOLD,16);

        budgetmenu.setFont(f1);
        legaldictionarymenu.setFont(f1);
        helpmenu.setFont(f1);

        JMenuItem backmenuitem= new JMenuItem(backicon);
        backmenu.add(backmenuitem);


        JMenuItem exitmenuitem= new JMenuItem(exiticon);
        exitmenu.add(exitmenuitem);

        menuBar.add(helpmenu);
        menuBar.add(homemenu);
        menuBar.add(fieldsmenu);
        menuBar.add(backmenu);
        menuBar.add(forwardmenu);
        menuBar.add(panelmenu);
        menuBar.add(searchmenu);
        menuBar.add(quickmenu);
        menuBar.add(infomenu);
        menuBar.add(exitmenu);
        menuBar.add(mastermenu);
        menuBar.add(tarrifmenu);
        menuBar.add(contactmenu);
        menuBar.add(webmenu);
        menuBar.add(wordmenu);
        menuBar.add(legaldictionarymenu);
        menuBar.add(budgetmenu);
        menuBar.add(memberdetailmenu);

        setJMenuBar(menuBar);

    /*
     Adding Listeners to the menus where required 

     */
            searchmenu.addActionListener(this);

    }

    public void actionPerformed(ActionEvent ae)
    {
     JOptionPane.showMessageDialog(null,"clicked");
          if(ae.getActionCommand().equals("Search"))
          {

           SearchForm frm=new SearchForm();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
          frm.setBounds(0,0,screenSize.width, screenSize.height);
          frm.setVisible(true);


          }           

    }

   public static void main(String args[])
{

       MenuScreen frm= new MenuScreen();

       Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
       frm.setBounds(0,0,screenSize.width, screenSize.height);
       frm.setVisible(true);
}
}

пожалуйста, помогите мне.


person ADESH RAJPUT    schedule 21.09.2012    source источник
comment
Пожалуйста, используйте последовательный и логичный отступ для блоков кода. Код в вопросах гораздо полезнее, если он читабельный. Благодаря тому, как этот код имеет отступы, мне было легче читать завтрак моей собаки.   -  person Andrew Thompson    schedule 21.09.2012
comment
Несколько советов 1) Если вопрос «как добавить значок и текст в пункт меню?» добавить код, который содержит одно меню с одним пунктом, а не 10 меню и более 100 строк кода. 2) logo.setBounds(100,80,500,350); Не делайте этого, это вызовет проблемы позже. Вместо этого используйте макеты (с отступом и границами).   -  person Andrew Thompson    schedule 21.09.2012


Ответы (3)


Используйте конструктор JMenuItem(String text, Icon icon)
. Если вы хотите, чтобы JMenu со значком и текстом, сделайте

helpmenu= new JMenu(" Help  ");
helpmenu.setIcon(..);
person basiljames    schedule 21.09.2012
comment
спасибо, что перед текстом отображается значок, но я хочу, чтобы текст под значком означал, что значок выше, а текст под значком и событие щелчка должны выполняться с помощью Jmenu - person ADESH RAJPUT; 21.09.2012
comment
@ADESHRAJPUT, пожалуйста, прочтите главу о том, как использовать JMenu / Items в учебнике, на который есть ссылка в вики по swing-tag - простые вопросы по api скучны для помощников и не очень помогают вам ... в конце концов , вам придется изучить API, который вы используете, и в конечном итоге это можно сделать, только прочитав его :-) - person kleopatra; 21.09.2012

- Для JMenuItem используйте JMenuItem((String text, Icon icon) конструктор,

- А для JMenu попробуйте использовать конструктор, который принимает String в качестве аргумента JMenu(String s) и метод setIcon()

Для настройки специальных ключевых параметров в MenuItems используйте setAccelerator()

Например:

myItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));

person Kumar Vivek Mitra    schedule 21.09.2012

Установите значок и текст в свой Action, который вы помещаете в меню (используя механизм пары ключ-значение). Ключи определены в Action интерфейсе.

класс javadoc интерфейса Action также содержит хорошая обзорная таблица доступных ключей и их влияния.

person Robin    schedule 21.09.2012