Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > JMenu поверх панелей.


Автор: jhane 19.11.2006, 08:14
Как сделать так, что бы JPanel не заслоняло менюшку?

Автор: LSD 19.11.2006, 12:14
Код
JMenuBar menuBar = new JMenuBar();
//init menuBar
JFrame frame = new JFrame();
frame.getRootPane().setJMenuBar(menuBar);

Автор: jhane 19.11.2006, 21:06
Не помогло. Все равно открывается за панелью (наднижним слоем панелей, но под верхним).

Автор: powerOn 19.11.2006, 21:14
Код

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
    }

    private void initComponents() {
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jMenu1.setText("Menu");
        jMenuItem1.setText("Item");
        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("Item");
        jMenu1.add(jMenuItem2);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        pack();
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
}


Автор: jhane 19.11.2006, 21:25
 smile  что ты хотел этим сказать?
Я построила меню:

Код

import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.ButtonGroup; 
import javax.swing.JRadioButtonMenuItem;
import java.awt.event.*;


public class MyMenu {
    static  JMenuBar mainMenuBar;
    private   JMenu menuFile;
    private   JMenu menuHelp; 
    private   JMenu menuProp;
    private   JMenu menuMusic;
    private   JMenu menuSound;
    private   JMenuItem menuNewGame;
    private   JMenuItem menuExit;
    private   JMenuItem silentlySound;
    private   JMenuItem loudlySound;
    private   JMenuItem silentlyMusic;
    private   JMenuItem loudlyMusic;
    private ButtonGroup buttonGroupMusic;
    private ButtonGroup buttonGroupSound;
    
    private Panel game;
    //private Panel game;
    
    //bydy posjlat' fajl s myzjkoj v progy 
    private String [] music = {"file:///F:/Java/primerj/zvyk/gong.au", "file:///F:/Java/primerj/zvyk/gong.au"}; 
    
    public MyMenu(){
        System.out.println("Menu");
        mainMenuBar = new JMenuBar(); 
        menuFile = new JMenu("File"); 
        menuFile.add("File");
        menuNewGame = new JMenuItem("New Game");
        menuFile.add(menuNewGame);
        menuFile.addSeparator();
        menuExit = new JMenuItem("Exit");
        menuFile.add(menuExit);
        menuProp =  new JMenu("Properties");
        menuProp.add("Language");
        menuMusic = new JMenu("Music");
        menuProp.add(menuMusic);
        loudlyMusic = new JRadioButtonMenuItem("Loudly");
        silentlyMusic = new JRadioButtonMenuItem("Silently"); 
        
        
        //grypiryem v odin yzel
        buttonGroupMusic = new ButtonGroup();
        buttonGroupMusic.add(loudlyMusic);
        buttonGroupMusic.add(silentlyMusic);
        
        loudlyMusic.setSelected(true);//vjbiraem "Loudly" po ymol4aniu 
        menuMusic.add(loudlyMusic);
        menuMusic.add(silentlyMusic);
        
        menuSound = new JMenu("Sound");
        menuProp.add(menuSound);
        
        loudlySound = new JRadioButtonMenuItem("Loudly");
        silentlySound = new JRadioButtonMenuItem("Silently"); 
        
        
        //grypiryem v odin yzel
        buttonGroupSound = new ButtonGroup();
        buttonGroupSound.add(loudlySound);
        buttonGroupSound.add(silentlySound);
        
        loudlySound.setSelected(true);//vjbiraem "Loudly" po ymol4aniu 
        menuSound.add(loudlySound);
        menuSound.add(silentlySound);
        
        menuHelp = new JMenu("Help");     
        menuHelp.add("Content");
        menuHelp.addSeparator();
        menuHelp.add("About");   
        
        menuNewGame.addActionListener(new ActionListener()
        {
         public void actionPerformed(ActionEvent e)
         {
          game.startGame();
         //    game.redraw(); 
         }
        });
        
        menuExit.addActionListener(new ActionListener()
        {
             public void actionPerformed(ActionEvent e)
             {
              game.checkBeforeExit();
              System.exit(0);
             }
            }); 
        
        mainMenuBar.add(menuFile);
        mainMenuBar.add(menuProp);
        mainMenuBar.add(menuHelp);  
        
        
      //  setJMenuBar(mainMenuBar);
    }
    public void setContainer(Panel game){
      this.game = game;
     }
}



а потом его подключила :
Код

getRootPane().setJMenuBar(MyMenu.mainMenuBar);


в фрейме. И как результат оно получилось между слоев фрейма.
Как бы над панелью, но под кнопкой этой панели....

Автор: powerOn 19.11.2006, 21:33
Цитата(jhane @  19.11.2006,  21:25 Найти цитируемый пост)
smile  что ты хотел этим сказать?

Вот что я хотел сказать, у тебя вопрос:

Цитата(jhane @  19.11.2006,  08:14 Найти цитируемый пост)
Как сделать так, что бы JPanel не заслоняло менюшку?


У меня постом выше ответ, то бишь код, в котором JPanel не заслоняет менюшку. 

Или я не понял вопрос.   smile  
Хочется на рабочий код посмотреть, где проблема проявляется...


Автор: jhane 19.11.2006, 22:28
как прикрепить файл с картинкой?

Автор: powerOn 19.11.2006, 22:41
среди кленовых есть кнопка ответить. Жми на неё попадешь в расширенную по функциональности форму для ответа. Там снизу есть кнопка для того что бы файл прикрепить.

Автор: jhane 19.11.2006, 22:55
Это выглядит так

Автор: powerOn 19.11.2006, 23:25
Restart - это панель или кнопка? Какой класс у компонента? Вы часом не AWT компонент используете(эффект был бы таким же...)?

Автор: LSD 19.11.2006, 23:56
Проблема в том, что компоненты AWT, из-за особенностей системы рисования, всегда рисуются поверх компонентов SWING. Замени все AWT компоненты на их SWING аналоги, в частности Panel game на JPanel game.

Автор: jhane 20.11.2006, 07:45
Я не использую AWT , кроме как Container.
Restart это JButton которая лежит на JPanel (она прозрачная).
В свою очередь все это лежит на PicturePanel extends javax.swing.JPanel. 
И все это на Container.

Автор: jhane 20.11.2006, 08:02
Вы были правы, я по ошибке Restart сделала Button, а не как все остальное.
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)