Dodanie rozwijanego menu do ramki

0

Witam, mam problem z dodaniem menu do ramki, w zasadzie mam problem z dodaniem czegokolwiek do ramki, ale myślę że jeżeli uda mi sie wstawić to menu to resztę też dam rade wstawić.Otóż mam trzy klasy:

-pierwsza o nazwie kalkulator jest klasą główną i uruchamia program.
-druga o nazwie Frame odpowiada za rzeczy związane z ramka
-trzecia o nazwie MenuBar odpowiedzialna jest za wyświetlenie menu pod paskiem tytułu

Sama klasa Frama działa bez zarzutu tak jak chce. Klasa MenuBar także działa prawidłowo i zachowuje się poprawnie (sprawdzona w innym programie).
Moim problemem jest to że nie moge umieścić menu w ramce.
Oto moj kod:

 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class kalkulator 
{
	public static void main(String[] args)
	{	
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					Frame frame = new Frame();
					frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					frame.setVisible(true);
				}
			});
	}

}
class Frame extends JFrame
{
	private static final int DEFAULT_WIDTH = 300;
	private static final int DEFAULT_HEIGHT = 200;
	private static final String DEFAULT_TITLE = "Kalkulator";
	private static final boolean DEFAULT_RESIZABLE = false;
	private static final boolean DEFAULT_POSITION = true;

	public Frame()
	{
		setLocationByPlatform(DEFAULT_POSITION);
		setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
		setTitle(DEFAULT_TITLE);
		setResizable(DEFAULT_RESIZABLE);
		MenuBar menubar = new MenuBar();
	}
}

class MenuBar extends JFrame
{
	public MenuBar()
	{
		JMenuBar menuBar = new JMenuBar();
	    setJMenuBar(menuBar);
	    
	    JMenu fileMenu = new JMenu("Plik");
	    
	    JMenuItem ZapiszJako = fileMenu.add(
	    		new AbstractAction("Zapisz jako")
	    		{
	    			public void actionPerformed(ActionEvent zdarzenie) 
	    			{
	    				
	    			}
	    		});
	    
	    ZapiszJako.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
	    
	    JMenuItem Zakoncz = fileMenu.add(
	    new AbstractAction("Zamknij")
        {
           public void actionPerformed(ActionEvent zdarzenie)
           {
              System.exit(0);
           }
        });
	    
	    Zakoncz.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.ALT_MASK));
	    
		JMenu helpMenu = new JMenu("Pomoc");
		
		JMenuItem Informacje = helpMenu.add(
				new AbstractAction("Kalkulator - informacje")
				{
					public void actionPerformed(ActionEvent zdarzenie)
					{
						
					}
				});
		
		menuBar.add(fileMenu);
		menuBar.add(helpMenu);
		
	}
}


0

Mieszasz dwie biblioteki, zamień wszędzie Frame na JFrame.

0

Anuluję poprzedni post, Ty masz tylko głupie nazwy klas (Frame,MenuBar). Nie widzę w nigdzie Twoim kodzie dodawania menu do głównego okna.

0

Nie bardzo rozumiem przecież wszędzie wykorzystuje bibliotekę JFrame. Frame to nazwa klasy.

Anuluję poprzedni post, Ty masz tylko głupie nazwy klas (Frame,MenuBar). Nie widzę w nigdzie Twoim kodzie dodawania menu do głównego okna.

MenuBar menubar = new MenuBar();
0

Frame i MenuBar, to nazwy standardowych klas Javy.

0

zmieniłem nazwy ale nic sie nie zmieniło poza tym

>import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class kalkulator 
{
	public static void main(String[] args)
	{	
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					Ramka frame = new Ramka();
					frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
					frame.setVisible(true);
				}
			});
	}

}
class Ramka extends JFrame
{
	private static final int DEFAULT_WIDTH = 300;
	private static final int DEFAULT_HEIGHT = 200;
	private static final String DEFAULT_TITLE = "Kalkulator";
	private static final boolean DEFAULT_RESIZABLE = false;
	private static final boolean DEFAULT_POSITION = true;

	public Ramka()
	{
		setLocationByPlatform(DEFAULT_POSITION);
		setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
		setTitle(DEFAULT_TITLE);
		setResizable(DEFAULT_RESIZABLE);
		PasekMenu menubar = new PasekMenu();
		
	}
}

class PasekMenu extends JFrame
{
	public PasekMenu()
	{
		JMenuBar menuBar = new JMenuBar();
	    setJMenuBar(menuBar);
	    
	    JMenu fileMenu = new JMenu("Plik");
	    
	    JMenuItem ZapiszJako = fileMenu.add(
	    		new AbstractAction("Zapisz jako")
	    		{
	    			public void actionPerformed(ActionEvent zdarzenie) 
	    			{
	    				
	    			}
	    		});
	    
	    ZapiszJako.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
	    
	    JMenuItem Zakoncz = fileMenu.add(
	    new AbstractAction("Zamknij")
        {
           public void actionPerformed(ActionEvent zdarzenie)
           {
              System.exit(0);
           }
        });
	    
	    Zakoncz.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.ALT_MASK));
	    
		JMenu helpMenu = new JMenu("Pomoc");
		
		JMenuItem Informacje = helpMenu.add(
				new AbstractAction("Kalkulator - informacje")
				{
					public void actionPerformed(ActionEvent zdarzenie)
					{
						
					}
				});
		
		menuBar.add(fileMenu);
		menuBar.add(helpMenu);
		
	}
}

 
0

Zmieniłeś mylące nazwy, ale kodu nie poprawiłeś.

class Ramka extends JFrame
{
    private static final int DEFAULT_WIDTH = 300;
    private static final int DEFAULT_HEIGHT = 200;
    private static final String DEFAULT_TITLE = "Kalkulator";
    private static final boolean DEFAULT_RESIZABLE = false;
    private static final boolean DEFAULT_POSITION = true;
 
    public Ramka()
    {
        setLocationByPlatform(DEFAULT_POSITION);
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        setTitle(DEFAULT_TITLE);
        setResizable(DEFAULT_RESIZABLE);
        setJMenuBar(setupMenuBar());
    }
    private JMenuBar setupMenuBar()
    {
        JMenuBar mb=new JMenuBar();
        JMenu fileMenu = new JMenu("Plik");
        ....
        return mb;
    }
}
0

dzięki @bogdans działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1