2010-10-14 4 views
0

Je n'ai jamais réalisé de développement d'applet. Essayer quelque chose de très simple. Fondamentalement, je dessine une ficelle sur la fenêtre. Cependant, chaque fois que je redimensionne la fenêtre, le contenu disparaît.Le contenu de l'appllet disparaît lors du redimensionnement

Une question suggérée similaire sur SO a recommandé de surcharger la méthode update() pour appeler repaint(). J'ai essayé mais ça ne l'a toujours pas fait. Comment puis-je centrer la chaîne ("Hello World!") Sur la fenêtre (pour qu'elle reste centrée même sur le redimensionnement)?

Voici le code:

import java.awt.Color; 
import java.awt.Graphics; 

import javax.swing.JApplet; 

public class TestApplet extends JApplet 
{ 
public void init(){ 
    setBackground (Color.gray); 
} 
public void paint (Graphics page){ 
    String name = "Hello World!"; 
    page.drawString(name,100,100); 
} 

public void update(Graphics page){ 
    this.repaint(); 
} 
} 

Répondre

2

C'est ancien code utilisé pour les applications AWT. Vous ne devez jamais remplacer les méthodes paint() ou update() d'un JApplet. Lors de l'utilisation de Swing, la peinture personnalisée est effectuée en remplaçant la méthode paintComponent() d'un JPanel (ou JComponent). Ensuite, vous ajoutez le panneau au volet de contenu de l'applet.

Lire la section du tutoriel Swing sur Custom Painting pour des exemples et plus de détails. Le tutoriel a également une section sur "Comment faire des applets" que vous devriez regarder.

Aussi comment puis-je centrer la chaîne (« Bonjour tout le monde! ») Sur la fenêtre (si qu'il reste centré même sur Redimensionner)

Obtenir la taille du panneau parent à l'aide la méthode getSize(). Puis divisez par 2. Bien que vous devez vous rappeler que le Y coordonné est le bas du texte pas le haut. Donc, vous devez également considérer les FontMetrics de la police pour connaître la hauteur exacte du texte. Vous pouvez obtenir les FontMetrics à partir de l'objet Graphics.

Questions connexes