Como executar um Swing Applet?

Cordiais saudações, pessoal do GUJ.com.br, venho apelar a vocês novamente.

Como eu executo o programa abaixo? Note que ele tem alguns comandos em HTML, usa Swing e Applet ao mesmo tempo. Já executei vários programas Swing mas nenhum applet, veja o resultado da compilação e da ordem de execução dada ao computador na tela de comandos e também o programa, logo abaixo:

Listagem do programa:

// Applet simples baseado em Swing.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/*

Esta HTML pode ser usada para iniciar o applet:

<applet code="MySwingApplet" width=200 height=80>
</applet>

*/

public class MySwingApplet extends JApplet {
    JButton jbtnUp;
    JButton jbtnDown;

    JLabel jlab;

    // Inicializa o applet.
    public void init() {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    makeGUI(); // inicializa a GUI
                }
            });
        } catch(Exception exc) {
            System.out.println("Cant create because of " + exc);
        }
    }

    // Esse applet não precisa sobrepor start(), stop() ou destroy().

    // Configura e inicializa a GUI.
    private void makeGUI() {
        // Configura o applet para usar o leiaute de fluxo.
        setLayout(new FlowLayout());

        // Cria dois botões.
        jbtnUp = new JButton("Up");
        jbtnDown = new JButton("Down");

        // Adiciona um ouvinte de ação para o botão Up.
        jbtnUp.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                jlab.setText("You pressed Up.");
            }
        });

        // Adiciona um ouvinte de ação para o botão Down.
        jbtnDown.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                jlab.setText("You pressed down.");
            }
        });

        // Adiciona os botões ao painel de conteúdo.
        add(jbtnUp);
        add(jbtnDown);

        // Cria um rótulo baseado em texto.
        jlab = new JLabel("Press a button");

        // Adiciona o rótulo ao painel de conteúdo
        add(jlab);
    }
}

Note que o programa foi compilado sem apresentar nenhum erro e gerou os seguintes arquivos .class: MySwingApplet.class, MySwingApplet$1.class, MySwingApplet$2.class, MySwingApplet$3.class.

Acredito que isto queira dizer que não há erros e o programa está pronto para ser executado. Como devo proceder?

Um grande abraço ao pessoal do GUJ.
Atenciosamente,
Ronaldo

Acho que vc não vai conseguir executa sua applet em nenhum navegador, pois todos já removeram o suporte à applets.

Uma alternativa é usar o appletviewer - The Java Applet Viewer.

Certo, mas precisa remover as linhas HTLM do programa .java? Acho que não pois está em um comentario.

E como fica a linha de comando? Ela usa os arquivos .class gerados ou deve se referir diretamente ao arquivo .java?

Obrigado por responder. Se puder de um exemplo de como executar meu programa (uma linha de comando).

Até mais,
Ronaldo

Pela documentação, vc precisa executar o comando assim:

appletviewer -classic MyApplet.html

Pelo que li, parece que soh vai funcionar para as JDKs anterior à versão 11. Vou tentar testar aqui e te falo se funcionar (nunca precisei executar isso antes).

1 curtida

Basta executar esse comando mesmo que vai funcionar. Testei aqui e deu certo. Meu html ficou assim:

index.html

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
	<applet code="MyApplet.class" width="300" height="300">
	</applet>
</body>
</html>

O applet fiz bem simples:

import java.applet.Applet;
import java.awt.Graphics;

public class MyApplet extends Applet {
	
	public void paint(Graphics g) {
		g.drawString("welcome", 150, 150);
	}
}

Print da execução:

Compilei e executei o código com a JDK 8:

openjdk version “1.8.0_292”
OpenJDK Runtime Environment (build 1.8.0_292-b10)
Eclipse OpenJ9 VM (build openj9-0.26.0, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20210421_1000 (JIT enabled, AOT enabled)
OpenJ9 - b4cc246d9
OMR - 162e6f729
JCL - 2a5e268814 based on jdk8u292-b10)


Mas segue o alerta que já foi dados por vários colegas aqui no GUJ:

Applet é uma tecnologia obsoleta, nenhum browser fornece suporte para applet hoje em dia. É uma tecnologia morta. Se vc está fazendo isso apenas para conhecer, bão, mas recomendo fortemente que não aprofunda seus estudos nisso. Vc pode estudar java swing, javaFx ou java web em vez disso. Flws!

2 curtidas

Realmente, eu estou apenas querendo conhecer os applets. Veja que esse programinha mistura applet e swing, então realmente não sei se vai funcionar, mas, agora mesmo, estou criando o HTML nos padrões que você me enviou. O meu programa compilado gerou quatro arquivos .class então vou usar o principal e ver o que dá. …Não sei se vai funcionar.

Obrigadão,
Ronaldo

Tentei executar mas não deu certo. Vou desistir dos applets e ir para JavaFX.

Até mais,
Ronaldo

Finalmente
E olha que te expliquei várias vezes que Applets não são mais suportados

1 curtida

Sábia escolha. Mas Applet Java era bem legal heim!!!.

Conhece essa belezura ?

https://www.jpro.one/demos

Nela está sendo rodado JavaFX no navegador sem uma JVM instalada.