Lancement d'un autre Applet à partir d'un autre Applet
J'ai fait un Chargeur Applet qui accueille l'utilisateur et lorsque l'utilisateur clique sur le bouton affiché sur cette Applet il lance alors le principal de l'applet et le Chargeur de l'Applet est détruit.
Mais en cliquant sur une Autre applet n'est pas lancé !
Chargeur Applet:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
public class Loader extends JApplet implements ActionListener{
Display secondApplet;
Button button;
@Override
public void init() {
setSize(800,600);
}
@Override
public void start() {
setLayout(new FlowLayout());
button = new Button ("Click me !!");
add(button);
button.addActionListener(this);
}
@Override
public void paint(Graphics g) {
}
@Override
public void actionPerformed(ActionEvent e) {
secondApplet = (Display)getAppletContext().getApplet("Display");
if (secondApplet != null) {
secondApplet.init();
secondApplet.start();
}
else {
System.out.println("Not Running\n");
}
}
}
D'Affichage De L'Applet:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JApplet;
public class Display extends JApplet {
@Override
public void init() {
setSize(600,400);
}
@Override
public void paint(Graphics g) {
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
}
Comment puis-je créer une instance de l'autre Applet et de détruire le courant de l'Applet !!
- quelle est l'erreur que vous obtenez?
- En fait j'ai été faire NullPointerException !! J'ai donc essayé de mettre un if-else Clause et a obtenu à la sortie "ne fonctionne Pas"
Vous devez vous connecter pour publier un commentaire.
Depuis une Applet/JApple est un java.awt.Panneau lui-même, alors vous pouvez imbriquer les unes dans les autres, pour votre cas particulier, vous pouvez incorporer Affichage en Chargeur à l'aide d'un Panneau en Chargeur pour recharger Affichage que vous en avez besoin.
Quelque chose comme ceci:
Il y a tellement de choses de mal avec les applets, il est difficile de savoir par où commencer. Mais concentrons nous 1er sur une stratégie raisonnable pour provoquer le changement entre une vue et un autre.
CardLayout
getAppletContext().showDocument(secondAppletURL);
. Sans doutesecondAppletURL
est différent de l'URL de la page qui héberge le premier applet.OK - les problèmes avec la première applet:
start()
méthode devrait être déplacé à l'init()
méthode, depuis lestart()
méthode peut être appelée à plusieurs reprises. Ensuite, il n'y a aucune raison de remplacerstart()
à tous.JApplet
) & AWT (par exempleButton
) composants sans une bonne raison. Dans ce cas, utilisezJButton
au lieu deButton
.ActionListener
de mettre en œuvre sur la classe parent.paint()
avec un vide de la mise en œuvre n'est pas une bonne idée. L'originalpaint()
attire l'applet et des composants, donc maintenant il n'en est rien.actionPerformed()
sont tout aussi absurdes. Une applet ne sont pas inclus dans leAppletContext
jusqu'à ce que aprèsinit()
&start()
ont été appelés, ce qui voudrait dire que l'appel de ces méthodes explicitement en cause l'a invoqué un second temps. Alors que lestart()
méthode est destinée à être appelée plusieurs fois, lainit()
méthode ne doit être appelé qu'une seule fois.2e Applet.
paint()
méthode ..peindre le BG de la couleur (ou le FG de la couleur - pas sûr), mais rien d'autre. Encore une fois, ne pas le remplacer.Essayer cette méthode pour charger une autre applet. Voir si cela fonctionne.