Menu'en forsvinder
Hej,Jeg har et problem med, at menuen forsvinder for mig, og det er temmelig irreterende. Det sker når jeg gør følgende:
Jeg klikker på menuen "andre-kartoteker", flytter musen ned på "Garanti" og klikker der. Det virker fint (normalt de 2 første gange).
Derefter gør jeg følgende: klikker på menuen "andre-kartoteker", så komme under-menu'en frem hvor der står "Garanti", men når jeg flytter musen ned på "Garanti", så forsvinder der hvor der står "Garanti". Hvis man så flytter musen op på "andre-kartoteker" uden at klikke, så kommer menu'en frem igen.
Det synes jeg er temmelig irreterende i længden, er der nogle der kan hjælpe mig?
Koden:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class GUIMain
{
public static void main (String[] arg)
{
HovedmenuFrame hMenu = HovedmenuFrame.getTheInstance("Hovedmenu"); //opretter menu-billedet
hMenu.show(); //viser munu-billedet
}
}
class HovedmenuFrame extends JFrame
{
//menu-"knapper"
private JMenuItem afslutMenuItem;
private JMenuItem garantiMenuItem;
private static HovedmenuFrame theInstance;
public HovedmenuFrame(String cap)
{
super(cap);
//sætter størrelsen
final int DEFAULT_FRAME_WIDTH = 600;
final int DEFAULT_FRAME_HEIGHT = 450;
setSize(DEFAULT_FRAME_WIDTH, DEFAULT_FRAME_HEIGHT);
setResizable(false);
addWindowListener(new WindowCloser());
initGUI();
}
public static HovedmenuFrame getTheInstance(String cap)
{
if(theInstance == null)
{
theInstance = new HovedmenuFrame(cap);
}
return theInstance;
}
private void initGUI()
{
//laver en menubar
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
MenuListener listener = new MenuListener();
//laver en tilbud-menu
JMenu fasteOplysningerMenu = new JMenu("Andre-kartoteker");
menuBar.add(fasteOplysningerMenu);
garantiMenuItem = new JMenuItem("Garanti");
fasteOplysningerMenu.add(garantiMenuItem);
garantiMenuItem.addActionListener(listener);
JMenu afslutMenu = new JMenu("Afslut");
menuBar.add(afslutMenu);
afslutMenuItem = new JMenuItem("Afslut");
afslutMenu.add(afslutMenuItem);
afslutMenuItem.addActionListener(listener);
}
private class MenuListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
// find the menu that was selected
Object source = event.getSource();
//hvor programmet går hen ved tryk på en menu-"knap"
if (source == afslutMenuItem)
{
System.exit(0);
}
else if (source == garantiMenuItem)
{
GarantiBeskrivelseFrame garantiBeskrivelseFrame = GarantiBeskrivelseFrame.getTheInstance(theInstance, "Garantioplysninger");
garantiBeskrivelseFrame.show();
}
}
}
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent event)
{
System.exit(0);
}
}
}
class GarantiBeskrivelseFrame extends JDialog
{
private Button okButton = new Button();
private static GarantiBeskrivelseFrame theInstance;
private GarantiBeskrivelseFrame(JFrame owner, String cap)
{
super(owner, cap, true);
initGUI();
addWindowListener(new WindowCloser());
okButton.addActionListener(new OkListener());
}
public static GarantiBeskrivelseFrame getTheInstance(JFrame owner, String cap)
{
if(theInstance == null)
{
theInstance = new GarantiBeskrivelseFrame(owner, cap);
}
return theInstance;
}
class OkListener implements ActionListener //ved klik på Opret-knappen
{
public void actionPerformed(ActionEvent e)
{
theInstance=null;
dispose();
}
}
private void initGUI()
{
setBounds(new java.awt.Rectangle(0, 0, 400, 421));
setResizable(false);
getContentPane().setLayout(null);
getContentPane().add(okButton);
}
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent event)
{
}
}
}