Applet mit JMenuBar

Status
Nicht offen für weitere Antworten.
M

MarioLemieux

Gast
Tach zusammen

Ich versuche ein Java-Applet zu programmieren mit einer JMenuBar. Jedoch hab ich diverse Probleme:

1. Wenn ich das ganze im Eclipse kompiliere habe ich die Menubar, jedoch wenn ich dann das class-file in ein htm-file einbinde und alles auf einen Server lade, kommt die Menubar nicht, also sie ist im Hintergrund. Wenn ich dann ein paar man den refresh -button des Browseres drücke, dann kommt sie zwischendurch

2. Wenn ich die Menubar öffne, möchte ich das laufende Programm anhalten. Wie könnte ich das machen? ich habe bis jetzt nur ActionListener für die Menubar, wenn die Menubar nur aufklappt ist das noch keine Aktion, oder?

3. Wenn ich die Menubar öffne, nichts auswähle und sie wieder schliesse, sollte ich das darunterliegende Grafik wieder repainten. Was brauche ich da für einen Listener? (ähnliches Problem wie 2.)


Vielleicht hat hier schon jemand was ähnliches gemacht und kann mir helfen. Wäre sehr nett!

Gruss MarioLemieux
 

Sky

Top Contributor
1.) Nimm mal JApplet anstatt Applet

2.) MenuListener

3.) MenuListener (wenn nicht automatisch repaintet wird.)
 
G

Guest

Gast
Hi sky80

Danke für deine Antworten.
Zu 1. ich brauche schon das JApplet. Ist eben recht mühsam, hab keine Ahnung mehr was machen...

Das mit den MenuListener werd ich gerade versuchen!
 

Sky

Top Contributor
Anonymous hat gesagt.:
Zu 1. ich brauche schon das JApplet. Ist eben recht mühsam, hab keine Ahnung mehr was machen...
Zeig mal deinen Code! Wenn Du JApplet und JMenuBar und JMenu (nicht: Applet, MenuBar, Menu) nimmst, dann sollte es gehen!
 
G

Guest

Gast
Code:
public void init(){
		
		
		Feld=new GUI_Feld(bedienfeld,FeldgrösseX, FeldgrösseY, lira, obra);
		 
		Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
		Dimension screen_size = toolkit.getScreenSize();       
		int width = screen_size.width; 
		int height = screen_size.height;
		  
		System.out.println("Screen Size width "+width+" height "+height);    

		this.rootPane.add(JMenu);
		
		//Bilder vorladen
		img_doc=getImage(getCodeBase(),"DOC.PNG");
		img_rip=getImage(getCodeBase(),"RIP.PNG");
		img_pokal=getImage(getCodeBase(),"POKAL.PNG");
		
		
		this.setBackground(Color.BLACK);
		
		JPanel p= new JPanel();

		//menu.initialisiereMenu(JMenu);
		this.setJMenuBar(JMenu);
		this.isDoubleBuffered();

		setVisible(true);
		this.getContentPane().setBackground(Color.BLACK);
		//setSize(1020,650);
		setSize(width-10,height-150);
		getContentPane().setLayout(new BorderLayout());
				
		rootPane.setVisible(true);
		
		p.setLayout(new BorderLayout());
		p.add(BorderLayout.CENTER,bedienfeld);
		p.add(BorderLayout.EAST, new JLabel("  "));
		
		getContentPane().add(BorderLayout.SOUTH,status);
		
		getContentPane().add(BorderLayout.EAST,p);
		status.statusAusgeben("Welcome to ArtDiab v2");
				
		esseninit();		
		System.out.println("ende init");
		this.setVisible(true);
		JMenu.setVisible(true);
		Feld.paint(getGraphics());	
		repaint();
	}




Code:
public class initialisiereMenu extends JFrame implements ActionListener, MenuListener{
	int FeldNeuZeichnen=0;
	int FeldLöschen=0;
	int MenuOffen=0;
	
	private JMenuItem m_Options;
	private JMenuItem m_Beenden;
	private JMenuItem m_NeuStart;

	private JMenuItem m_About;
	
	JMenuBar mMenuBar;
	JMenu mMenuGame;
	JMenu mMenuInfo;
	
	GUI_Bedienfeld bf;
	

	public initialisiereMenu(JMenuBar mMenuBar, GUI_Bedienfeld bedienfeld) {
	
		bf=bedienfeld;
		//1.Menu (Spiel)

		mMenuBar.add(mMenuGame= new JMenu ("Game"));
		mMenuGame.add(m_Options= new JMenuItem("Options"));
		mMenuGame.add(m_NeuStart= new JMenuItem("New Game"));
		mMenuGame.add(m_Beenden= new JMenuItem("Exit"));
		
		//2.Menu (?)
		mMenuBar.add(mMenuInfo= new JMenu ("?"));
		mMenuInfo.add(m_About= new JMenuItem("About"));
		
		//Registieren dieser Klasse als Beobachter für alle Einträge
		m_Beenden.addActionListener (this);
		m_NeuStart.addActionListener (this);
		m_Options.addActionListener (this);
		m_About.addActionListener (this);
		mMenuGame.addActionListener(this);
		mMenuInfo.addActionListener(this);
		
		this.rootPane.repaint();
		
	}
	
	/**
	 * Auswertung der Klicks im Menu
	 */
	public void actionPerformed(ActionEvent event) {
		
		
		
		if (event.getSource()==mMenuGame){
			FeldNeuZeichnen=1;
			repaint();
		}
		
		if (event.getSource()==m_About){
			JOptionPane.showMessageDialog(
				null, "ArtDiab v2 programmed by ICU Technology \n" +
					  "Copyright 2005" ,"About", JOptionPane.INFORMATION_MESSAGE);
			FeldNeuZeichnen=1;
			getRootPane().repaint();
		}
		if (event.getSource()==m_Options){
			 new GUI_Dialog_Options(bf);
		}
		
		if (event.getSource()==m_NeuStart){
			FeldNeuZeichnen=1;
			
		}
		if (event.getSource()==m_Beenden){
			System.exit(0);
		}
		
		FeldNeuZeichnen=1;
		getRootPane().repaint();
		
	}
	
	public int FeldNeuZeichen(){
		return FeldNeuZeichnen;	
	}
	
	public void FeldZeichen(int Feld){
		FeldNeuZeichnen=Feld;
		System.out.println("Feldneuzeichenn im initMenu "+FeldNeuZeichnen);
	}

	public int FeldLöschen() {
		return FeldLöschen;
	}

	public void itemStateChanged(ItemEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void menuSelected(MenuEvent arg0) {
		// TODO Auto-generated method stub
		MenuOffen=1;
		System.out.println("MENU GEDRÜCKT");
	}

	public void menuDeselected(MenuEvent arg0) {
		// TODO Auto-generated method stub
		MenuOffen=0;
	}

	public void menuCanceled(MenuEvent arg0) {
		// TODO Auto-generated method stub
		
	}

Ist nur ein Ausschnitt aus dem Code
Mit dem MenuListener hab ichs auch noch nicht ganz auf die Reihe gekriegt..
 
G

Guest

Gast
Also das mit dem MenuListener hab ich jetzt hingekriegt! Danke für den Tipp! :applaus:
Jetzt ist nur noch der Punkt 1 offen.. na dann muss ich wohl noch ein bisschen :###
 

MarioLemieux

Mitglied
Hat da niemand eine Ahnung, was ich falsch mache?
Es ist so, jetzt hab ichs wenigstens so hingebracht, das die MenuBar kommt, wenn ich einmal den refresh button des Browsers klicke...

oder kann man mit Java den refresh button des Browseres auslösen? (Ist zwar nicht sauber, aber ich sollte drum langsam was haben...)
 

MarioLemieux

Mitglied
Das mit dem htmlconverter hab ich jetzt auch herausgefunden, leider bringts auch nichts.
Ich bekomm die Menubar einfach nicht hin. Bei erste mal refresh kommt sie und wenn ich dann das Browserfenster minimiere und dann wieder maximiere ist sie wieder weg.

Ich denke, irgendwo könnte ein setVisible oder so was fehlen, aber ich weiss leider nicht wo...
 

L-ectron-X

Gesperrter Benutzer
Toll, bei mir funktioniert die Anzeige nicht. (Opera 8, JRE 1.5.0, Win XP)
Schöne weiße Webseite...

Der IE meint in seiner Statusleiste, dass er die Klasse NetShare.class nicht finden kann...
 

MarioLemieux

Mitglied
Hi MadHatter,

Ja genau so etwas möchte ich eigentlich auch machen, aber bei mir überzeichnets die Menubar immer, bin jetzt mir der "Brechstange" dahinter und setzte sie einfach in jedem paint neu, aber dafür kommen jetzt die Bilder nicht mehr :cry:


Hier mal zum schauen ( eben jetzt fehlen die Bilder...)
www.datacomm.ch/r.s/ArtDiabv2_2/htmlversuch.htm

Kannst du mir mal den Quellcode geben, dann könnte ich mal schauen, was du anders machst!

Gruss MarioLemieux
 

MadHatter

Aktives Mitglied
Gerne, ich hoffe der Code helft dir:
Code:
import java.io.*;
import java.util.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class ChildFrame extends JInternalFrame implements ActionListener
{
    private JList myList;

    private JTextField myEdit;

    public ChildFrame(String title, JApplet applet)
    {
        super("Child " + title, true, true);
        setIconifiable(true);
        setMaximizable(true);
        setBackground(Color.lightGray);
        setSize(300, 200);
        this.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);

        getContentPane().setLayout(new BorderLayout());

        JPanel Pnl = new JPanel();
        Pnl.setLayout(new GridLayout(1, 2));

        myEdit = new JTextField();
        myEdit.addActionListener(this);

        Pnl.add(new JLabel("Enter text:", new ImageIcon(NetShare.loadImage("duke.gif", applet)), JLabel.LEFT));
        Pnl.add(myEdit);
        getContentPane().add(Pnl, BorderLayout.NORTH);

        myList = new JList();
        myList.setModel(new DefaultListModel());
        getContentPane().add(new JScrollPane(myList), BorderLayout.CENTER);
        // pack();
    }

    public void actionPerformed(ActionEvent e)
    {
        ((DefaultListModel) myList.getModel()).addElement(e.getActionCommand());
    }
}

public class NetShare extends JApplet implements ActionListener
{
    private JDesktopPane desk;

    // private JPanel Background;

    public void init()
    {
        desk = new JDesktopPane();
        desk.setDesktopManager(new DefaultDesktopManager());
        this.setContentPane(desk);

        addChild(new ChildFrame("doofi", this));

        // Menü initialisieren
        JMenuBar mb = new JMenuBar();
        JMenu menu = new JMenu("System");

        JMenuItem itm = new JMenuItem("New");
        itm.addActionListener(this);
        menu.add(itm);
        menu.addSeparator();

        itm = new JMenuItem("Exit");
        itm.addActionListener(this);
        menu.add(itm);

        mb.add(menu);

        menu = new JMenu("Themes");
        itm = new JMenuItem("Metal");
        itm.addActionListener(this);
        menu.add(itm);

        itm = new JMenuItem("Motif");
        itm.addActionListener(this);
        menu.add(itm);

        itm = new JMenuItem("Windows");
        itm.addActionListener(this);
        menu.add(itm);

        mb.add(menu);
        this.setJMenuBar(mb);

        this.setLayout(new BorderLayout());
        this.add(new JLabel("", new ImageIcon(loadImage("bg640x480.gif", this)),
                JLabel.LEFT), BorderLayout.CENTER);
    }

    public void start()
    {
        JOptionPane.showConfirmDialog(this, getCodeBase(), "restarted",
                JOptionPane.PLAIN_MESSAGE);
    }

    public void stop()
    {

    }

    public void destroy()
    {

    }

    public void addChild(JInternalFrame nChild)
    {
        desk.add(nChild);
        nChild.setVisible(true);
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getActionCommand().equals("Exit"))
        {
            this.setEnabled(false);
            JOptionPane.showConfirmDialog(this, "Exited", "Exited",
                    JOptionPane.PLAIN_MESSAGE);
        } else if(e.getActionCommand().equals("New"))
        {
            addChild(new ChildFrame("neu fenster", this));
        }

        String plaf = UIManager.getLookAndFeel().getName();
        if(e.getActionCommand() == "Windows")
        {
            if(JOptionPane.showConfirmDialog(this,
                    "Are you sure you want to switch to Windows-style?",
                    "Are you sure?", JOptionPane.YES_NO_OPTION,
                    JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION)
                plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
        } else if(e.getActionCommand() == "Motif")
        {
            plaf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
        } else if(e.getActionCommand() == "Metal")
        {
            plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
        }

        try
        {
            UIManager.setLookAndFeel(plaf);
            SwingUtilities.updateComponentTreeUI(this);
        } catch(Exception ex)
        {
        }
    }

    public static Image loadImage(String FName, JApplet applet)
    {
        Image img = null;
        try
        {
            img = applet.getImage(new URL(applet.getCodeBase().toString()
                    + FName));
        } catch(Exception e)
        {
        }
        
        return img;
    }

    /**
     * @param args
     */
    public static void main(String[] args)
    {
    }

    /**
     * shows Quellcode of an Page
     * 
     * @param ort
     */
    public void showURL(String ort)
    {
        URL meineurl;
        InputStream is = null;
        try
        {
            meineurl = new URL(ort);
            is = meineurl.openStream();
        } catch(Exception e)
        {
        }
        DataInputStream dis = new DataInputStream(is);

        while(true)
        {
            try
            {
                String line = dis.readLine();
                if(line == null)
                    break;
                System.out.println(line);
            } catch(IOException e)
            {
            }
        }
    }
}
 

MarioLemieux

Mitglied
Hmm, mache es eigentlich genau wie du...
Nur wird die Menubar einfach manchmal überzeichnet, denke ich. Etwa zu 90% funktionierts und 10% nicht. Ebenfalls ist die Menubar verschwunden, wenn ich das Browserfenster minimiere und dan wieder maximiere ( das ist sie immer weg).
 

MarioLemieux

Mitglied
Hab leider das Problem mit der Menubar immer noch nicht gelöst...
Hat vielleicht jemand noch ne Ahnung mit was man die Menubar überschreiben könnte? Hab jetzt so ziemlich an allen Orten ein setVisible(true) versucht, aber bis jetzt noch ohne Erfolg, leider ???:L

Noch einmal meine Beobachtungen:
- Manchmal kommt die Menubar beim Starten, manchmal nicht
- wenn ich das Browserfenster schiesse und wieder öffne ist sie auf jeden fall weg!
- wenn sie nicht da ist, kann ich in den linken oberen Ecken klicken, dann kommt sie hervor..

Wie schon mal geschrieben, ich bin ziemlich ratlos!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java-Applet zur Mittelwertberechnung Java Basics - Anfänger-Themen 3
D Java Applet wird nicht im Browser angezeigt Java Basics - Anfänger-Themen 6
M bestehendes Projekt als Applet speichern Java Basics - Anfänger-Themen 2
S Erste Schritte Java - Applet - Rechteck ständig versetzen Java Basics - Anfänger-Themen 14
A Applet Plot für atan erstellen Java Basics - Anfänger-Themen 1
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
K JDK installieren displays java applet für MAC Java Basics - Anfänger-Themen 10
S Zeichen von abgerundeten Rechtecken auf einem Applet Java Basics - Anfänger-Themen 5
J Einfache einbindung eines Bildes in ein Applet Java Basics - Anfänger-Themen 4
S Klassen Applet extern aufrufen Java Basics - Anfänger-Themen 1
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
C Applet Probleme Java Basics - Anfänger-Themen 1
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
G Applet in ein JSP einbinden Java Basics - Anfänger-Themen 1
C Java-Applet Fehler "NoClassDefFoundError"? Java Basics - Anfänger-Themen 1
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
J JavaScript findet Applet Methode nicht Java Basics - Anfänger-Themen 2
J Punkte im Java-Applet verbinden Java Basics - Anfänger-Themen 4
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
K Applet funz. im Browser nicht Java Basics - Anfänger-Themen 11
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
thet1983 Erste Schritte <param> Tag in Applet Java Basics - Anfänger-Themen 4
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
G Signiertes Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 1
Y Applet: Verschlüsselung Java Basics - Anfänger-Themen 3
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
F signiertes Applet fkt. nicht bei lokalem Aufruf Java Basics - Anfänger-Themen 2
K Frage zu Applet Java Basics - Anfänger-Themen 3
V While Schleife für ganzes Applet Java Basics - Anfänger-Themen 6
P Applet Histogramm Java Basics - Anfänger-Themen 6
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
S Applet findet Klasse nicht Java Basics - Anfänger-Themen 7
R Java Applet mit Mausklick ansprechen Java Basics - Anfänger-Themen 3
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
S Applet-Objekt ist vor dem Hintergrund Java Basics - Anfänger-Themen 11
F Problem mit Applet Java Basics - Anfänger-Themen 5
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
S Erste Schritte Fenster wechsel im Applet Java Basics - Anfänger-Themen 7
S Applet Deployment Java Basics - Anfänger-Themen 2
X Applet Fehler: java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 45
H Applet - main()-Methode Java Basics - Anfänger-Themen 4
K Applet wird nicht im Browser und Appletviewer angezeigt Java Basics - Anfänger-Themen 5
L Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat) Java Basics - Anfänger-Themen 4
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
H Klassen in Eclipse stellt es im Ausgabe-Applet nicht dar Java Basics - Anfänger-Themen 5
L Applet soll Html-File öffnen Java Basics - Anfänger-Themen 2
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
Dogge Start:Applet nicht Initialisiert Java Basics - Anfänger-Themen 11
D Applet beenden Java Basics - Anfänger-Themen 7
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
M RSA Applet ohne Cipher Java Basics - Anfänger-Themen 15
B String verschlüsseln - Applet - ohne BASE64 Java Basics - Anfänger-Themen 7
S Methode in Applet starten Java Basics - Anfänger-Themen 2
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
W Probleme mit Java Applet Java Basics - Anfänger-Themen 5
M Applet kann in Browser nicht ausgeführt werden Java Basics - Anfänger-Themen 4
L Applet: Laden unterbricht den Browserfokus (scrollen) Java Basics - Anfänger-Themen 2
Z Applet startet nicht bei Domain mit Umlaut Java Basics - Anfänger-Themen 2
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
Helgon ClassNotFound Applet Java Basics - Anfänger-Themen 6
U Applet Signiert und trotzdem Fehlermeldung Java Basics - Anfänger-Themen 18
E Schach in Java-Applet <No main classes found> Java Basics - Anfänger-Themen 5
S Applet Java Basics - Anfänger-Themen 2
S [Applet] Objekte von init bei paint benutzen Java Basics - Anfänger-Themen 9
E Applet wird nicht angezeigt Java Basics - Anfänger-Themen 11
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
B Applet - Laden eines Java-Fensters bricht ab Java Basics - Anfänger-Themen 6
N Import Problem, Applet will nicht Java Basics - Anfänger-Themen 6
M Applet Eclipse Vollbild Java Basics - Anfänger-Themen 3
K Befehl per Shell an Java-Applet JAR übergeben Java Basics - Anfänger-Themen 16
I Java Applet Java Basics - Anfänger-Themen 8
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
KBJ Java Applet Gästebuch Java Basics - Anfänger-Themen 12
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
U Applet wird nicht angezeigt Java Basics - Anfänger-Themen 2
J J-Applet, Frage Java Basics - Anfänger-Themen 19
J Applet farblich gestalten Java Basics - Anfänger-Themen 5
M Applet lokaler Festplattenzugriff Java Basics - Anfänger-Themen 25
X Applet - Client/Server Java Basics - Anfänger-Themen 2
M Applet ist nur graues Feld Java Basics - Anfänger-Themen 12
O webserver für Applet und php Java Basics - Anfänger-Themen 7
J Fehlermeldung: Applet nicht initialisiert Java Basics - Anfänger-Themen 24
C Java Applet Probleme Java Basics - Anfänger-Themen 4
S Probleme mit Java 3D Tutorial (Applet) Java Basics - Anfänger-Themen 7
S Input/Output Problem mit dateizugriff innerhalb der .jar (Applet) Java Basics - Anfänger-Themen 2
M Applet + BilderDownload Java Basics - Anfänger-Themen 36
O Applet Wetterticker Java Basics - Anfänger-Themen 17
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Bild in Applet darstellen Java Basics - Anfänger-Themen 6
W Applet funktiniert nur in Eclipse Java Basics - Anfänger-Themen 2
S Erste Schritte Machbarkeit: Applet oder GUI-Applikation? Java Basics - Anfänger-Themen 3
R Daten von Applet an Website Java Basics - Anfänger-Themen 4
A Linie Zeichnen Applet mit Double Wert Java Basics - Anfänger-Themen 3
O (von Applet) daten an Server übergeben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben