Ajuda com Applet

Tenho uma aplicação e tenho q transformá-la em um Applet, gostaria de uma ajuda de como implementar.
Segue o código da aplicação é um jogo da Velha Simples.
Grata desde já :smiley:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class JogoDaVelha extends JFrame implements ActionListener  {
    private static final long serialVersionUID = 1L;
    private JButton[][] botoes;
    private String vez;
    private boolean terminou;
    //Mudança de cores dos breguetinhos
    private static final Color COR_X = Color.GREEN;
    private static final Color COR_O = Color.PINK;

    public JogoDaVelha() throws HeadlessException {
        super("Jogo da Velha");
        // Define tamanho da janela
        setSize(200, 240);
        // Define menu
        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu("Jogo");
        JMenuItem iteNovo = new JMenuItem("Novo Jogo");
        iteNovo.addActionListener(this);
        menu.add(iteNovo);
        menu.addSeparator();
        JMenuItem iteSair = new JMenuItem("Sair");
        iteSair.addActionListener(this);
        menu.add(iteSair);
        menuBar.add(menu);
        setJMenuBar(menuBar);
        // Panel com os botões
        criarNovoJogo();
        // Chama método para centralizar janela
        centralizarJanela();
        // Prepara saída da janela
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 
        addWindowListener(new WindowAdapter() {
            public final void windowClosing(final WindowEvent e) {
                if (JOptionPane.showConfirmDialog(null, "Deseja fechar o jogo da velha?", "Fechar", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
                    System.exit(0);
                }
            }
        });
    }

    private void criarNovoJogo() {
        getContentPane().removeAll();
        // Define layout da janela
        int borda = 25;
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(Box.createVerticalStrut(borda), BorderLayout.NORTH);
        getContentPane().add(Box.createVerticalStrut(borda), BorderLayout.SOUTH);
        getContentPane().add(Box.createHorizontalStrut(borda), BorderLayout.EAST);
        getContentPane().add(Box.createHorizontalStrut(borda), BorderLayout.WEST);
        JPanel pJogo = new JPanel();
        pJogo.setLayout(new GridLayout(3, 3));
        // Cria conjunto de botões
        botoes = new JButton[3][3];
        Font font = new Font("Verdana", Font.BOLD, 14);
        for (int y = 0; y < 3; y++) {
            for (int x = 0; x < 3; x++) {
                botoes[x][y] = new JButton();
                botoes[x][y].setActionCommand("b" + x + "_" + y);
                botoes[x][y].addActionListener(this);
                botoes[x][y].setFont(font);
                pJogo.add(botoes[x][y]);
            }
        }
        getContentPane().add(pJogo, BorderLayout.CENTER);
        getContentPane().validate();
        // Começa o X
        vez = "X";
        terminou = false;
    }

    public void actionPerformed(ActionEvent arg0) {
        if ("Sair".equals(arg0.getActionCommand())) {
            if (JOptionPane.showConfirmDialog(null, "Deseja sair do jogo da velha?", "Sair", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
                System.exit(0);
            }
        } else if ("Novo Jogo".equals(arg0.getActionCommand())) {
            criarNovoJogo();
        } else if (arg0.getActionCommand().startsWith("b")) {
            if (terminou) {
                JOptionPane.showMessageDialog(null, "Jogo finalizado!", "Erro", JOptionPane.ERROR_MESSAGE);
            } else {
                String[] coord = arg0.getActionCommand().substring(1).split("_");
                int x = Integer.parseInt(coord[0]);
                int y = Integer.parseInt(coord[1]);
                if (botoes[x][y].getText().equals("")) {
                    botoes[x][y].setText(vez);
                    if (vez.equals("X")) {
                        botoes[x][y].setForeground(COR_X);                        
                        vez = "O";
                    } else {
                        botoes[x][y].setForeground(COR_O);                        
                        vez = "X";
                    }
                    verificarVitoria();
                } else {
                    JOptionPane.showMessageDialog(null, "Posição já foi marcada!", "Erro", JOptionPane.ERROR_MESSAGE);
                }
            }
        }
    }

    private void verificarVitoria() {
        String vencedor = "";
        // Verifica horizontais e verticais
        for (int i = 0; i < 3; i++) {
            if (!botoes[i][0].getText().equals("")) {
                if ((botoes[i][0].getText().equals(botoes[i][1].getText())) && (botoes[i][2].getText().equals(botoes[i][1].getText()))) {
                    terminou = true;
                    vencedor = botoes[i][0].getText();
                    break;
                }
            }
            if (!botoes[0][i].getText().equals("")) {
                if ((botoes[0][i].getText().equals(botoes[1][i].getText())) && (botoes[2][i].getText().equals(botoes[1][i].getText()))) {
                    terminou = true;
                    vencedor = botoes[0][i].getText();
                    break;
                }
            }
        }
        // Verifica diagonais
        if (!botoes[1][1].getText().equals("")) {
            if ((botoes[0][0].getText().equals(botoes[1][1].getText())) && (botoes[2][2].getText().equals(botoes[1][1].getText()))) {
                terminou = true;
                vencedor = botoes[1][1].getText();
            } else if ((botoes[0][2].getText().equals(botoes[1][1].getText())) && (botoes[2][0].getText().equals(botoes[1][1].getText()))) {
                terminou = true;
                vencedor = botoes[1][1].getText();
            }
        }
        if (terminou) {
            JOptionPane.showMessageDialog(null, vencedor + " é o vencedor!", "Vitória", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    public final void centralizarJanela() {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        int x = ge.getCenterPoint().x - (this.getWidth() / 2);
        int y = ge.getCenterPoint().y - (this.getHeight() / 2);
        setLocation(x, y);
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        JogoDaVelha jogo = new JogoDaVelha();
        jogo.setVisible(true);
    }
}

http://www.guj.com.br/articles/16

Boa noite a todos.

Antes de mais nada, para se criar um Applet ou JApplet, necessário é saber os ciclos de vida das Applets dentro de um navegador de internet, que são:

Ciclo de Vida:

1º) Método init: executado quando a applet é carregada pela primeira vez. Praticamente é o construtor da Applet

2º) Método start: executado quando o navegador carrega ou volta à página (recebe o foco) com a applet.

3º) Método stop: executado quando o navegador deixa a página (perde o foco) com a applet.

4º) Método destroy: executado quando o navegador é fechado.

Também existe outros métodos e sintaxes declarados em seu JFrame que não são declarados na Applet ou JApplet, são eles: setDefaultCloseOperation e addWindowListener, até porque este último, os eventos de janela são controlados pelo navegador e implementação que foi declarada dentro método windowClosing de WindowListening pode ser implementada no método Stop() ou Destroy(). Quanto ao setDefaultCloseOperation, a operação de fechamento da Applet já foi descrita pelos métodos acima.

A sintaxe super não recebe parâmetros.

Além disso, procure tratar qualquer exceção dentro da Applet, porque se houver qualquer erro e voce jogar uma exceção para cima, principalmente no método init() que é o seu construtor, a Applet poderá ficar travada sem que nenhuma mensagem de erro seja exibida, eis que o navegador não está preparado para isto.

Procure também centralizar ou localizar a sua applet, assim como o seu tamanho dentro das tags do navegador “” ou “” do navegador. O Internet Explorer funciona melhor com as tags

Assim sendo a sua Applet ficaria assim:

import java.awt.BorderLayout;  
import java.awt.Color;  
import java.awt.Font;  
// import java.awt.GraphicsEnvironment;  
import java.awt.GridLayout;  
import java.awt.HeadlessException;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
  
import javax.swing.Box;  
import javax.swing.JApplet;
import javax.swing.JButton;  
import javax.swing.JMenu;  
import javax.swing.JMenuBar;  
import javax.swing.JMenuItem;  
import javax.swing.JOptionPane;  
import javax.swing.JPanel;  

public class JVelha extends JApplet implements ActionListener {  
    
    private static final long serialVersionUID = 1L;  
    private JButton[][] botoes;  
    private String vez;  
    private boolean terminou;  
    //Mudança de cores dos breguetinhos  
    private static final Color COR_X = Color.GREEN;  
    private static final Color COR_O = Color.PINK;
    
    @Override
    public void init(){
        /* super não recebe parâmetros em JApplet  
        super("Jogo da Velha");
        */
        // Define tamanho da janela
        try {
            setSize(200, 240);  
            // Define menu  
            JMenuBar menuBar = new JMenuBar();  
            JMenu menu = new JMenu("Jogo");  
            JMenuItem iteNovo = new JMenuItem("Novo Jogo");  
            iteNovo.addActionListener(this);  
            menu.add(iteNovo);  
            menu.addSeparator();  
            JMenuItem iteSair = new JMenuItem("Sair");  
            iteSair.addActionListener(this);  
            menu.add(iteSair);  
            menuBar.add(menu);  
            setJMenuBar(menuBar);  
            // Panel com os botões  
            criarNovoJogo();  
            // A centralização da janela fica por conta do navegador  
            // centralizarJanela();  
            // Prepara saída da janela
        } catch (HeadlessException ex){
            JOptionPane.showMessageDialog(this, ex.getMessage());
        }     
        
            /* Este método não existe em JApplet
            setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
         
        Este evento é configurado no método stop() da Applet
        addWindowListener(new WindowAdapter() {  
            public final void windowClosing(final WindowEvent e) {  
                if (JOptionPane.showConfirmDialog(null, "Deseja fechar o jogo da velha?", "Fechar", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {  
                    System.exit(0);  
                }  
            }  
        }); 
       */
    }

    @Override
    public void stop(){
       if (JOptionPane.showConfirmDialog(null, "Deseja fechar o jogo da velha?", "Fechar", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {  
           destroy();
       }  
    }
    
    private void criarNovoJogo() {  
        getContentPane().removeAll();  
        // Define layout da janela  
        int borda = 25;  
        getContentPane().setLayout(new BorderLayout());  
        getContentPane().add(Box.createVerticalStrut(borda), BorderLayout.NORTH);  
        getContentPane().add(Box.createVerticalStrut(borda), BorderLayout.SOUTH);  
        getContentPane().add(Box.createHorizontalStrut(borda), BorderLayout.EAST);  
        getContentPane().add(Box.createHorizontalStrut(borda), BorderLayout.WEST);  
        JPanel pJogo = new JPanel();  
        pJogo.setLayout(new GridLayout(3, 3));  
        // Cria conjunto de botões  
        botoes = new JButton[3][3];  
        Font font = new Font("Verdana", Font.BOLD, 14);  
        for (int y = 0; y < 3; y++) {  
            for (int x = 0; x < 3; x++) {  
                botoes[x][y] = new JButton();  
                botoes[x][y].setActionCommand("b" + x + "_" + y);  
                botoes[x][y].addActionListener(this);  
                botoes[x][y].setFont(font);  
                pJogo.add(botoes[x][y]);  
            }  
        }  
        getContentPane().add(pJogo, BorderLayout.CENTER);  
        getContentPane().validate();  
        // Começa o X  
        vez = "X";  
        terminou = false;  
    }  
  
    public void actionPerformed(ActionEvent arg0) {  
        if ("Sair".equals(arg0.getActionCommand())) {  
            stop();  
        } else if ("Novo Jogo".equals(arg0.getActionCommand())) {  
            criarNovoJogo();  
        } else if (arg0.getActionCommand().startsWith("b")) {  
            if (terminou) {  
                JOptionPane.showMessageDialog(null, "Jogo finalizado!", "Erro", JOptionPane.ERROR_MESSAGE);  
            } else {  
                String[] coord = arg0.getActionCommand().substring(1).split("_");  
                int x = Integer.parseInt(coord[0]);  
                int y = Integer.parseInt(coord[1]);  
                if (botoes[x][y].getText().equals("")) {  
                    botoes[x][y].setText(vez);  
                    if (vez.equals("X")) {  
                        botoes[x][y].setForeground(COR_X);                          
                        vez = "O";  
                    } else {  
                        botoes[x][y].setForeground(COR_O);                          
                        vez = "X";  
                    }  
                    verificarVitoria();  
                } else {  
                    JOptionPane.showMessageDialog(null, "Posição já foi marcada!", "Erro", JOptionPane.ERROR_MESSAGE);  
                }  
            }  
        }  
    }  
  
    private void verificarVitoria() {  
        String vencedor = "";  
        // Verifica horizontais e verticais  
        for (int i = 0; i < 3; i++) {  
            if (!botoes[i][0].getText().equals("")) {  
                if ((botoes[i][0].getText().equals(botoes[i][1].getText())) && (botoes[i][2].getText().equals(botoes[i][1].getText()))) {  
                    terminou = true;  
                    vencedor = botoes[i][0].getText();  
                    break;  
                }  
            }  
            if (!botoes[0][i].getText().equals("")) {  
                if ((botoes[0][i].getText().equals(botoes[1][i].getText())) && (botoes[2][i].getText().equals(botoes[1][i].getText()))) {  
                    terminou = true;  
                    vencedor = botoes[0][i].getText();  
                    break;  
                }  
            }  
        }  
        // Verifica diagonais  
        if (!botoes[1][1].getText().equals("")) {  
            if ((botoes[0][0].getText().equals(botoes[1][1].getText())) && (botoes[2][2].getText().equals(botoes[1][1].getText()))) {  
                terminou = true;  
                vencedor = botoes[1][1].getText();  
            } else if ((botoes[0][2].getText().equals(botoes[1][1].getText())) && (botoes[2][0].getText().equals(botoes[1][1].getText()))) {  
                terminou = true;  
                vencedor = botoes[1][1].getText();  
            }  
        }  
        if (terminou) {  
            JOptionPane.showMessageDialog(null, vencedor + " é o vencedor!", "Vitória", JOptionPane.INFORMATION_MESSAGE);  
        }  
    }  
  /*  A centralização da Janela fica por conta da posição que ficará no Navegador
    public final void centralizarJanela() {  
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();  
        int x = ge.getCenterPoint().x - (this.getWidth() / 2);  
        int y = ge.getCenterPoint().y - (this.getHeight() / 2);  
        setLocation(x, y);  
    }  
 */  
}

Dentro dos navegadores você pode configurar a sua Applet assim:

 // Com a tag Applet
<APPLET
      CODE="nome_do_pacote_dentro_da_applet.nome_do_programa.class"
      HEIGHT="altura em pixels"
      WIDTH="largura em pixels"
      NAME="nome_do_objeto"
      CODEBASE="diretório base do arquivo de classe Java"
      ALT="texto descritivo"
      HSPACE="margens externas laterais em pixels"
      VSPACE="margens externas verticais em pixels"
      ALIGN="left" ou "right" ou "top" ou "middle" ou "bottom" ou  "texttop" ou "absmiddle" ou "absbottom" ou "baseline"
      MAYSCRIPT>
      <PARAM NAME="nome" VALUE="valor">
      <PARAM NAME="nome" VALUE="valor">
</APPLET>

// Com a tag Object.
<OBJECT CLASSID="nome_do_pacote_dentro_da_applet.nome_do_programa.class"
        TYPE="application/x-java-applet"
        HEIGHT="altura em pixels"
        WIDTH="largura em pixels">
        <PARAM NAME="codebase" VALUE="applet" />
        <PARAM NAME="archive" value="nome do arquivo jar (applet compilada em jar), bibliotecas jar anexadas na Applet.jar" />"
        <PARAM NAME="nome" VALUE="valor"/>
        <PARAM NAME="nome" VALUE="valor"/>
        <PARAM NAME="mayscript" VALUE="true"/>
</OBJECT>

Repare que voce pode até passar parâmetros para dentro de sua applet.

A sintaxe MAYSCRIPT permite até voce invocar instruções JavaScript dentro da Applet, porém isto é uma outra história que vai alongar muito esse post, por isto dê uma olhada neste arquivo que vai anexo.

Dê uma olhada também sobre Java Web Start para que voce possa fazer uma assinatura de sua applet na página cliente.

Cara que legal…vc acabou de fazer o dever de casa dela…

Boa tarde Lucas.

Nem tanto :roll:

Ainda falta parte de permissões de Applet, onde tem que configurar as assinaturas e isto voce pode fazer com Java Web Start, para que a caixa de areia dos navegadores não barre a applet 8)

Além disso, dei a ela um tutorial de Applet com JavaScript, caso voce precise fazer o seu dever de casa também, e só aproveitar. :? :slight_smile: :smiley:

Ok…muito obrigado…

acho que não vou ler não…se eu precisar eu posto aqui.dai vc faz pra mim…

Bom dia a todos (as).

Lucas, se eu ver que voce estiver realmente precisando, eu o farei com muitíssimo prazer , pegando o seu dever e explicando com todos os detalhes de como se fazer a coisa, e isso é diferente de fazer qualquer dever dos outros, entregando-os de bandeija sem explicar nada, lembre-se que o bom professor é aquele que passa o dever aos alunos, e sempre os corrige em aula seguinte, explicando tudo na lousa, aqui a nossa lousa são os posts, e pra finalizar leia esse pensamento abaixo.