2010-07-15 8 views
2

OK donc j'avoir cette applet des thats comme ceboutons applet java

  • BorderLayout.CENTER - (Dans c'est JPanel)
  • BorderLayout.EAST - (Dans c'est un nouveau GridLayout (4,5)
  • BorderLayout.SOUTH - Je dois Survoler la boutons pour les voir Ils ne peignent pas là, je suppose (Dans c'est un TextArea)

Quoi qu'il en soit, sur l'applet, mais je suis d'ajouter. eux dans la méthode init() ... donc je ne sais pas ce que je fais w Rong et pourquoi il le fait.

setLayout(new BorderLayout()); 
JPanel invOne = new JPanel(new GridLayout(5,4)); 
JPanel game = new JPanel(); 
add(invOne, BorderLayout.EAST); 
add(game, BorderLayout.CENTER); 
add(c, BorderLayout.SOUTH); 

invOne.setBounds(416,0, 60, 28); 

for (int i = 0, j = 20; i < 20; i = i+1, j = j-1) { 
    invOne.add(new JButton("SLOT " + j)); 
    invOne.setBounds(32,32,100,100); 
    invOne.setFocusable(false); 
} 

game.setBounds(0,0, 416, 288); 
repaint(); 
+0

Encore une fois, vous postez des bits aléatoires de code qui ne nous aident pas à résoudre le problème. On vous a demandé un SSCCE dans le passé. Apprenez à créer sur et poster pour que nous ne perdons pas de temps à deviner quelle erreur stupide que vous faites cette fois. Il y a des exemples d'exemples dans le tutoriel Swing. Téléchargez-les et testez-les et apprenez à poster une question appropriée. Oui, le tutoriel a même un exemple JApplet simple. – camickr

+0

Voir quelques messages à moi, j'ai ajouté le SSCCE. – nn2

+0

PS -Techniquement, j'ai posé une bonne question. – nn2

Répondre

2

Qu'essayez-vous d'accomplir avec tous les appels setBounds()? Soit vous laissez pack() définir la taille de votre panneau en fonction de ce qui est à l'intérieur, ou vous définissez les limites une fois à l'endroit où vous voulez voir ce panneau assis. Surtout les appels avec une taille de 32x32 pixels n'aident pas du tout.


EDIT:

Je trouve ces problèmes:

  • Comme une autre affiche mentionné, vous mélangez des composants Swing et AWT. Cela ne fonctionne pas bien. Essentiellement, si certains des composants que vous utilisez ont un "J" au début, vous voudrez aller avec "J" pour chacun d'eux. AWT est maintenant considéré comme "old school". C'est un peu déroutant car certaines classes et composants utilisés dans les interfaces graphiques n'ont pas de J. Je suppose que vous devez travailler avec de bons exemples ou regarder les cours. Pour une raison quelconque, l'applet ne voulait pas fonctionner correctement jusqu'à ce que j'indique le nombre de lignes/colonnes explicite à TextArea (maintenant appelé JTextArea). J'ai changé new TextArea() en new JTextArea(3,20).

  • Le plus gros problème peut avoir été la méthode vide paint(). Je me demande comment l'applet affiche quoi que ce soit? Vous auriez pu supprimer la méthode paint(); Je l'ai réparé en appelant le super.paint().

  • Enfin, les noms de classes (tels que bl) doivent commencer par des majuscules. Le compilateur d'IdeOne s'est moqué de moi pour ça.

Here's my fixed code.

Joyeux hacking!

+0

OK c'est le code ... http://www.dasdas.pastebin.com/ftwpx7rK Il a juste l'interface graphique ... et quand j'ai essayé de compiler je reçois: C: \ Documents and Settings \ djasnowski \ Mes Documents \ bl.java: 33: ne peut pas trouver le symbole symbole: méthode pack() emplacement: class bl \t \t this.pack(); – nn2

+1

J'espère pouvoir le réparer bientôt. Je rapporterai. –

+0

Je l'ai eu. J'ai changé Applet en JApple mais maintenant le jPanel gris recouvre les tuiles dessinées (drawImage) les tuiles ... – nn2

1

Après avoir ajouté tous vos composants dans le panneau, appelez-vous le explicitement « pack() » (ou « repeindre() ») méthode? Ne pas appeler ces méthodes peut entraîner des problèmes graphiques dans vos cadres ...

+0

OK, j'ai ajouté le code. Comme vous pouvez le voir j'ai rajouté repaint() mais pas de chance ... (A propos, c'est une applet pas un Frame) – nn2

2

Trouvé one page (in german language) qui décrit le même problème: Les widgets JButton n'apparaissent qu'après avoir passé la souris dessus.

Le problème était que les composants/widgets AWT et Swing ont été mélangés.Je ne peux pas voir à partir de votre fragment de code si c'est le cas, mais si vous avez des importations java.awt.*, désactivez-les, refactorisez votre code pour utiliser uniquement les classes Swing et réessayez/espoir pour le mieux.

Une autre suggestion était de faire explicitement un setVisible(true) pour chaque bouton, mais le questionneur a dit, que cela n'a pas aidé dans son cas.

1

Vous utilisez des composants Swing dans une applet. Vous devriez utiliser JApplet. Changez simplement extends Applet en extends JApplet.