Applet Applet in JFrame einbinden

Teddy1997

Mitglied
Hallo,
ist mein erster Eintrag in diesem Forum und ich bin mit deshalb nicht so sicher ob die Frage hier so richtig ist.
Also folgendes Problem hab ich:
Zunächst habe ich ein kleines Spiel programmiert, das auch wunderbar klappt. Nun möchte ich auch noch ein Menü erstellen, indem es ein Button gibt, womit man diverse Einstellungen vornehmen kann. Das Problem ist allerdings, dass ich das Menü als JFrame programmiert habe. Beim zusammenfügen ist mit dann aufgefallen, dass dies ja in zwei unterschiedlichen "Fenstern" programmiert habe.
Im Internet steht dass das Applet eine Unterklasse von Panel ist. Nun meine Frage:
Kann ich, das was ich als Spiel in einem Applet programmiert habe, dies in einem Panel speichern, sodass, wenn man auf dem Menü auf den Button Play drückt ein weiteres JFrame geöffnet wird mit diesem Panel drauf?
(Habe nämlich vor das als .jar Datei unabhängig von Eclipse laufen zu lassen)

Ps.: Die beiden Programmteile funktionieren unabhängig ganz gut.

Das erste Programmabschnitt zeigt die Hauptklasse wovon später alles gestartet wird:
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;




public class Menue extends JFrame implements ActionListener{
    private Game theGame = new Game(this);
    private Settings theSettings = new Settings(this);
    private Highscore theHighscore = new Highscore(this, theSettings);
    private int anfangX = 500;
    private int anfangY = 220;
    private int breiteX = 640;
    private int hoeheY = 360;
    private JPanel MPanel = new JPanel();
    private JButton btPlay = new JButton("Play");
    private JButton btSettings = new JButton("Einstellungen");
    private JButton btHighscore = new JButton("Highscore");
    private JButton btBeenden = new JButton("Beenden");
    private JFrame FrameMenue = new JFrame("Menü");
    
    public Menue() {
        JFrameMenue();
    }


    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == btPlay) 
            theGame.MGame();    
        if(e.getSource() == btSettings)
            theSettings.JFrameSettings();
        if(e.getSource() == btHighscore)
            theHighscore.JFrameHighscore();
        if(e.getSource()==btBeenden)
            FrameMenue.setVisible(false);
    }
    
    public void JFrameGame(){
        JFrame GameFrame = new JFrame();
        GameFrame.setBounds(anfangX-anfangX, anfangY-anfangY, 1600, 900);
        GameFrame.setVisible(true);
        GameFrame.setTitle("Game: Teddy Bounce");
    }
    
    private void JFrameMenue(){
        FrameMenue.setVisible(true);
        FrameMenue.setBounds(anfangX, anfangY, breiteX, hoeheY);
        FrameMenue.setTitle("Teddy Bounce");
        FrameMenue.add(MPanel);
        MPanel.setVisible(true);
        MPanel.add(btPlay);
        MPanel.add(btSettings);
        MPanel.add(btHighscore);
        MPanel.add(btBeenden);
        btPlay.addActionListener(this);
        btHighscore.addActionListener(this);
        btSettings.addActionListener(this);
        btBeenden.addActionListener(this);
    }
    
    public static void main(String[] args) {
        new Menue();    //Klassenaufruf
    }
}

Die zweite Klasse, die Aufgerufen wird, sobald man btPlay gedrückt hat lautet:

Code:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.net.URL;
import java.util.Random;




public class Startingpoint extends Applet implements Runnable, 
    KeyListener, MouseMotionListener, MouseListener {




    private Image i;
    private Graphics doubleG;
    Ball b, b2;
    Platform p[] = new Platform[7];
    Item item[] = new Item[3];
    private int score;
    double cityX = 0;
    double cityDx = 3;
    URL url;
    Image city;
    int levelcheck = 0;
    boolean gameOver = false;
    boolean mouseIn = false;
    boolean musicplay = false;
    
    public int getScore() {
        return score;
    }
    public void setScore(int score) {
        this.score = score;
    }
    int test = (int) Math.random()*1000;
    @Override
    public void init() {
        setSize(800, 600);
        addKeyListener(this);
        addMouseListener(this);
        addMouseMotionListener(this);
        try {
            url = getDocumentBase();
        }catch(Exception e) {
            
        }
        city = getImage(url, "http://www.java-forum.org/images/buildings.png");
        //Pictures p = new Pictures(this);
        new Pictures(this);
        Pictures.music.loop();
        
    }
    @Override
    public void start() {
        b = new Ball();
        score = 0;
        for (int i = 0; i <p.length; i++) {
        p[i] = new Platform(i*120, 300);
    }
        
        for (int i = 0; i <item.length; i++) {
            Random r = new Random();
            switch(r.nextInt(5)){
            case 0:
                item [i] = new GravUp(getWidth() + 2000 * i);
                break;
            case 1:
                item [i] = new GravDown(getWidth() + 2000 * i );
                break;
            case 2:
                item [i] = new AgilUp(getWidth() + 2000 * i);
                break;
            case 3:
                item [i] = new AgilDown(getWidth() + 2000 * i);
                break;
            case 4:
                item [i] = new Scoreplus(getWidth() + 2000 * i, this);
                break;
                
            }
        }
        
        Thread thread = new Thread(this);
        thread.start();
        
    }
    public void run() {
        while(true){
            
            //if (x < 0 - width)
            for(int i = 0;i < p.length; i++){
                int testx = p[i].getX();
                if (testx < 0 - p[i].getWidth()){
                    Random r = new Random();
                    int fakei = i;                
                    if (i == 0){
                        fakei = p.length;
                    }
                    p[i].setX(p[fakei-1].getX() + p[i].getWidth() +Pictures.level* r.nextInt(5) );
    //Abstand der Bricks vorher p[i].setX(p[fakei-1].getX() + p[i].getWidth() +Pictures.level* r.nextInt(25) );
                }
            }
            gameOver= b.getGameOver();
            
            if(levelcheck > 350){ //Schwierigkeitsgrad-----------------------------------------
                Pictures.level++;
                levelcheck = 0;
            }
            levelcheck++;
            if (cityX > getWidth()* -1) {
                cityX-= cityDx;
            }else{
                cityX = 0;
            }
            if(!gameOver){
                score++;
            }
            
            Random r = new Random();
            
            for (int i = 0; i< item.length; i++){
                if( item [i].isCreateNew()){
                    item [i] = null;
                    switch(r.nextInt(5)){
                    case 0:
                        item [i] = new GravUp(getWidth() + 10*r.nextInt(500));
                        break;
                    case 1:
                        item [i] = new GravDown(getWidth() + 10*r.nextInt(500) );
                        break;
                    case 2:
                        item [i] = new AgilUp(getWidth()+10*r.nextInt(500));
                        break;
                    case 3:
                        item [i] = new AgilDown(getWidth()+10*r.nextInt(500));
                        break;
                    case 4:
                        item [i] = new Scoreplus(getWidth()+10*r.nextInt(500), this);
                        break;    
                    }
                    item[i].setCreateNew(false);
                }
            }
            
            b.update(this);
        
            for (int i = 0; i<p.length; i++) {
            p[i].update(this, b);
            }
            
            for (int i = 0; i<item.length; i++) {
                item[i].update(this, b);
                }
            
            repaint();
            try {
                Thread.sleep(17);
            } catch (InterruptedException e) {
                
                e.printStackTrace();
            }
        }
    }
    
    @Override
    public void stop() {
        
        
    }
    
    @Override
    public void destroy() {
        
        
    }
    
    @Override
    public void update(Graphics g) {
        if(i == null){
            i = createImage(this.getSize().width, this.getSize().height);
            doubleG = i.getGraphics();
        }
        
        doubleG.setColor(getBackground());
        doubleG.fillRect(0, 0, this.getSize().width, this.getSize().height);


        doubleG.setColor(getForeground());
        paint(doubleG);
        
        g.drawImage(i, 0, 0, this);
    }
    
    
    public void paint(Graphics g) {
        g.setColor(new Color(15,77,147));
        g.fillRect(0, 0, getWidth(), getHeight());
        g.drawImage(city, (int) cityX, 0, this);
        g.drawImage(city, (int) cityX +getWidth(), 0, this);


        //b.paint(g);
    
        for (int i =0; i<p.length; i++) {
        p[i].paint(g);
    }
        for (int i =0; i<item.length; i++) {
            item[i].paint(g);
        }    
        b.paint(g);
        
        String s = Integer.toString(score);
        Font font = new Font("Serif", Font.BOLD, 32);
        g.setFont(font);
        g.setColor(Color.RED);
        g.drawString(s, getWidth()-150+2, 50+2);
        g.setColor(Color.BLUE);
        g.drawString(s, getWidth()-150, 50);
        
        if(gameOver){
            new Pictures(this);
            g.setColor(Color.BLUE);
            if(score<500){
                g.drawString("Du bist schlecht :( , nur "+getScore()+" Punkte!", 300, 300);
            }if(score > 500 && score<2500){
            g.drawString("Du hast " + getScore() + " Punkte GAME OVER!", 300, 300);
            }if (score > 2500){
                g.drawString("KILLA! du hast " + getScore() + " Punkte!", 300, 300);
            }if(score == 257||score == 999){
                Pictures.music.stop();
            }
            //g.drawRect(280, 300, 170, 40);
            //mouse check
            if( mouseIn){
                g.setColor(Color.RED);
                g.drawString("nochmal ?", 280, 340);
            }else{
                g.setColor(Color.GREEN);
                g.drawString("nochmal ?", 280, 340);
            }
        }
    }
        
    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub
        switch(e.getKeyCode()){
        case KeyEvent.VK_LEFT:
            b.moveLeft();
            break;
        case KeyEvent.VK_RIGHT:
            b.moveRight();
            break;
        }
        
    }
    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseDragged(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO Auto-generated method stub
        if(gameOver){
            
        
        if(e.getX() > 280 && e.getX()<460){
            if(e.getY() > 320 && e.getY() < 360){
                mouseIn = true;
            }
        }
        if (e.getX() < 280 || e.getX() >460){
            mouseIn = false;
        }
        if (e.getY() < 320 || e.getY() >360){
            mouseIn = false;
            }
        }
        }
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        //start new Game
        if(mouseIn){
            b = null;
            b = new Ball();
            score = 0;
            Pictures.level = 1;
            for (int i = 0; i <p.length; i++) {
                p[i] = new Platform(i*120, 300);
                if(musicplay == true){
                    Pictures.music.play();
                    Pictures.absturz.stop();
                }
            }
            
            
                for (int i = 0; i <item.length; i++) {
                    Random r = new Random();
                    switch(r.nextInt(5)){
                    case 0:
                        item [i] = new GravUp(getWidth() + 2000 * i);
                        break;
                    case 1:
                        item [i] = new GravDown(getWidth() + 2000 * i );
                        break;
                    case 2:
                        item [i] = new AgilUp(getWidth() + 2000 * i);
                        break;
                    case 3:
                        item [i] = new AgilDown(getWidth() + 2000 * i);
                        break;
                    case 4:
                        item [i] = new Scoreplus(getWidth() + 2000 * i, this);
                        break;
                        
                    }
                }
                mouseIn = false;
                musicplay = false;
        }
    }
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
}

Zu diesen beiden Klassen gibt es auch noch andere Klassen die im zusammenhang funktionieren. Mir geht es nur darum, wie ich die Klasse Startingpoint aufrufen kann, ohne dass es eine NullPointerException auftritt.

Vielen Dank
 
Zuletzt bearbeitet:

strußi

Top Contributor
programmier das doch so, dass du 3 panels machst
unterstes panel(main) mit Borderlayout, main.North( Panel mit menu), main.Center( Spiel)
Grüße
 

Teddy1997

Mitglied
ja sry habe jave erst seit eineinhalb jahren von der schule aus.
Ich muss ja irgendwie das Applet spieichern. Kann man das auch so machen, dass man zuerst ein Panel deklariert.
private JPanel panelapplet = new JPanel();

und dann in der init()- methode:
JPanel.add(this)? (Mit der Referenz).

Soll ich dann das JPanel in einer Methode an die Klasse Menü übergeben und sobald auf btPlay gedrückt wird ein neues JFrame mit dem JPanel aufrufen und dann die init()- Methode aufrufen?
 

strußi

Top Contributor
du kannst es so machen:
klasse Fenster in der machst du einen JFrame frame =new JFrame(), ein Panel dem du das Panel mit dem inhalt für das Fenster mitgibst und eine JMenubar alternativ JToolBar die du dem frame hinzufügst.
 

strußi

Top Contributor
dir fehlen noch die klassen
Game, Settings, Highscore, Picture, Ball, Platform, Item, ItemSubclasses (GravUp, GraveDown, AgilUp, AgilDown, Scoreplus)
 

strußi

Top Contributor
Ein Vorschlag wäre es so aufzubauen
Java:
public class NeuesFenster{
    JFrame frame =new JFrame();
    JPanel panel =new JPanel(new BorderLayout());
    
    JMenuBar bar =new JMenuBar();
    
    void initMenu(){JMenu datei =new JMenu( "Datei");
            JMenuItem itemOpen =new JMenuItem( "Oeffnen");
            //ActionListener oder Action
        datei.add( itemOpen);
        bar.add( datei);
        frame.setJMenuBar( bar);
    }
    
    void initFrame(){
        panel.add( new Menue());
    }
    
    public void NeuesFenster(){
        initMenu();
        initFrame();
    }
    
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 6
S [JAVA] JFrame in Applet/JApplet AWT, Swing, JavaFX & SWT 14
B 2 Probleme (JFrame & Applet) AWT, Swing, JavaFX & SWT 7
R Applet aus JFrame starten AWT, Swing, JavaFX & SWT 2
M Swing Butten & TextFields aus Applet im JFrame nicht sichtbar AWT, Swing, JavaFX & SWT 2
B Unterschied JFrame/Applet AWT, Swing, JavaFX & SWT 12
I JFrame-Anmerkung "Java Applet Window" entfernen AWT, Swing, JavaFX & SWT 4
I JFrame Applet-Anmerkung entfernen ? - Teil 2 AWT, Swing, JavaFX & SWT 5
M Applet in JFrame darstellen AWT, Swing, JavaFX & SWT 2
B Aus Applet => JFrame öffnen AWT, Swing, JavaFX & SWT 12
F JFrame Applet-Anmerkung entfernen ? :( AWT, Swing, JavaFX & SWT 41
S Warum nur in JFrame, nicht in Applet? AWT, Swing, JavaFX & SWT 6
M extends JFrame, Applet (Mehrfachverwerbung?) AWT, Swing, JavaFX & SWT 8
S JFrame und JFrame im Applet AWT, Swing, JavaFX & SWT 5
R "Statusbar" - JFrame mit 'Java Applet Window' AWT, Swing, JavaFX & SWT 18
G Grafikformat für AWT-Applet? AWT, Swing, JavaFX & SWT 0
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
S Sandboxed Applet weiterhin moeglich..? AWT, Swing, JavaFX & SWT 5
S Oracle's neue Sicherheitseinstellungen zerstoeren mein Applet. Was tun? AWT, Swing, JavaFX & SWT 3
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
U CardLayout im Applet AWT, Swing, JavaFX & SWT 4
J Applet Applet Vererbung/Überladen AWT, Swing, JavaFX & SWT 5
G JavaFX mit ANT deployen als Applet AWT, Swing, JavaFX & SWT 3
S Applet Application 2 applet AWT, Swing, JavaFX & SWT 3
T Applet JTattoo Look and Feel AWT, Swing, JavaFX & SWT 5
T Signiertes Applet Urheber angeben AWT, Swing, JavaFX & SWT 5
S Applet Repaint AWT, Swing, JavaFX & SWT 3
B Java-Applet Parameter übergabe? AWT, Swing, JavaFX & SWT 2
M Applet mit Bildern AWT, Swing, JavaFX & SWT 2
T Applet in JSP einbinden AWT, Swing, JavaFX & SWT 4
R MouseEvent.getX() liefert in Applet Screen-Koordinate AWT, Swing, JavaFX & SWT 2
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
A Applet Applet vom Web-Server aus aufrufen AWT, Swing, JavaFX & SWT 11
A Applet Applet startet nicht AWT, Swing, JavaFX & SWT 2
P Tatsächliche Größe für Applet AWT, Swing, JavaFX & SWT 3
B Applet Aus Applet signiertes jar mit externen libs erstellen AWT, Swing, JavaFX & SWT 9
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
M Warum funktioniert mein Applet nicht? AWT, Swing, JavaFX & SWT 6
D Applet hintergrund wird nicht weiß AWT, Swing, JavaFX & SWT 2
R Applet JavaScript Methodenaufruf AWT, Swing, JavaFX & SWT 2
A Applet Animiertes gif in awt applet anzeigen AWT, Swing, JavaFX & SWT 11
X Applet Java Applet Datei Ausführung AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4
A Applet Applet aus Code neu starten AWT, Swing, JavaFX & SWT 2
K Applet erkennt keine Frameverkleinerung AWT, Swing, JavaFX & SWT 5
S Applet funktioniert nach Browserreload nicht richtig AWT, Swing, JavaFX & SWT 2
T Applet Applet vs. WebStart AWT, Swing, JavaFX & SWT 4
S Applet starten AWT, Swing, JavaFX & SWT 4
K JTable im Browser nicht zu sehen - Applet AWT, Swing, JavaFX & SWT 6
B Applet Button oder Toolbar in einem Applet AWT, Swing, JavaFX & SWT 5
V Applet mit Bildbearbeitung AWT, Swing, JavaFX & SWT 3
V Applet Applet starten schlägt fehl AWT, Swing, JavaFX & SWT 2
W Button in Applet AWT, Swing, JavaFX & SWT 9
kniffel GUI-Applet JTable füllt Hintergrund völlig aus AWT, Swing, JavaFX & SWT 4
J Applet Java-Applet friert mit Firefox ein AWT, Swing, JavaFX & SWT 8
J Applet Tetris flackert AWT, Swing, JavaFX & SWT 9
F Applet Applet starten...(+Timer?) AWT, Swing, JavaFX & SWT 12
D Applet Applet das auf fremden Libraries basiert einbinden? AWT, Swing, JavaFX & SWT 20
M Applet wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
E Applet Neuen Tab aus Applet öffnen AWT, Swing, JavaFX & SWT 3
G Applet, Link ermitteln, dem der Benutzer gefolgt ist AWT, Swing, JavaFX & SWT 2
K Email versenden ueber Applet AWT, Swing, JavaFX & SWT 11
S Button aktivieren (Applet) AWT, Swing, JavaFX & SWT 2
3 Applet Applet zeigt nur weiße Fläche AWT, Swing, JavaFX & SWT 15
A Programmieren einer Agenda mit einer Liste (als Applet und .txt zum Speichern) AWT, Swing, JavaFX & SWT 7
H applet Methode aus abstrakter Klasse aufrufen AWT, Swing, JavaFX & SWT 12
H Applet - Hilfedateien im Browser öffnen / eine Webseite laden AWT, Swing, JavaFX & SWT 6
O JPanel aus Applet starten AWT, Swing, JavaFX & SWT 3
O Applet-Steuerung mit Tastaturbefehlen AWT, Swing, JavaFX & SWT 3
F 4-Gewinnt als Applet AWT, Swing, JavaFX & SWT 24
F Applet vs Stand-Alone-Client AWT, Swing, JavaFX & SWT 3
B AWT Bild als Hintergrund im Applet AWT, Swing, JavaFX & SWT 2
D Probleme mit MouseWheelListener und JLayeredPane in Applet AWT, Swing, JavaFX & SWT 2
G Applet und Swing Anwendung AWT, Swing, JavaFX & SWT 2
S Applet - Aerger mit dem Hintergrundbild - JLabel und JTextfield AWT, Swing, JavaFX & SWT 7
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
R for-Schleife in Applet ausgeben AWT, Swing, JavaFX & SWT 3
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
W Swing heapsort + Applet AWT, Swing, JavaFX & SWT 4
P Diagramm in einem Applet zeichnen AWT, Swing, JavaFX & SWT 4
M Java Applet JTable/JList AWT, Swing, JavaFX & SWT 6
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2
K Alternative zu Applet mit HTML-Einbindung AWT, Swing, JavaFX & SWT 11
J Java-Applet beenden AWT, Swing, JavaFX & SWT 3
T Konfiguration speichern in Applet AWT, Swing, JavaFX & SWT 2
P Swing Roter Faden beim Applet GUI Programmieren AWT, Swing, JavaFX & SWT 2
T HTML Seite neu laden mittels Applet AWT, Swing, JavaFX & SWT 2
T Icon von Frame ändern - Applet AWT, Swing, JavaFX & SWT 2
T Java Applet beenden AWT, Swing, JavaFX & SWT 2
I Swing .Jar Datei - funktioniert - nun als Applet AWT, Swing, JavaFX & SWT 13
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
M AWT text im applet formatieren AWT, Swing, JavaFX & SWT 5
L Applet Frage AWT, Swing, JavaFX & SWT 25
1 Verständnisprobleme bei Java Applet AWT, Swing, JavaFX & SWT 13
T [Applet] startet in Eclipse aber nicht im Browser AWT, Swing, JavaFX & SWT 2
G JSlider in Applet AWT, Swing, JavaFX & SWT 4
P Swing Applet AWT, Swing, JavaFX & SWT 2
R problem mit bildanzeige in applet und main AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben