2013-07-13 3 views
-1

Ici je vais à nouveau ... se battre avec des balançoires !!! Je crée donc un test en ligne qui sera affiché dans une applet. Le nombre de questions dans les tests n'est pas fixe, donc j'ai besoin de poser des questions en fonction du test. Afin d'afficher les questions j'ai créé une question jpanel que j'ai ensuite ajouté au panneau de conteneur qui sera affiché dans l'applet. Pour le panneau conteneur, j'utilise une boxlayout qui me permet d'empiler les questions les unes sur les autres.éviter boxlayout chevauchement

Mon problème est qu'après avoir ajouté plus de 5 questions au panneau de conteneur, les questions commencent à se chevaucher. Alors, quelqu'un peut-il me guider?

Premièrement, comment puis-je éviter le chevauchement? Deuxièmement, un jpanel a-t-il une taille maximale fixe? Ou y a-t-il un moyen de le rendre assez grand pour répondre à toutes les questions du test dans le conteneur du panneau? J'ai pensé à intégrer le panneau dans un jscrollpane ou je ne sais pas si une fois le panneau conteneur est intégré dans l'applet, il défile vers le bas lorsque je fais défiler le navigateur ... Merci les gars pour toute aide

Voici un pic de quoi il ressemble quand il n'y a pas beaucoup de questions ...

enter image description here

Voici le code ...

public class Test extends JPanel { 

    public Test() { 
     setLayout(null);    
     JScrollPane scrollPane = new JScrollPane(); 
     scrollPane.setBounds(0, 5, 712, 1200); 
     add(scrollPane); 

     JPanel panel = new JPanel(); 
     scrollPane.setViewportView(panel); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 

     MultipleChoice q1 = new MultipleChoice(); 
     panel.add(q1); 
     MultipleChoice q2 = new MultipleChoice(); 
     panel.add(q2); 
     MultipleChoice q3 = new MultipleChoice(); 
     panel.add(q3); 
     MultipleChoice q4 = new MultipleChoice(); 
     panel.add(q4); 
     MultipleChoice q5 = new MultipleChoice(); 
     panel.add(q5);  
    }  
} 
+3

Numéro un: ne pas faire 'setLayout (null);'. Ne fais pas ça. Il va vous visser à chaque fois. Numéro deux: si vous avez besoin de notre aide, vous avez vraiment besoin d'aide, alors s'il vous plaît faites un effort pour poster un [sscce] (http://sscce.org). Sinon, vous nous obligez à deviner, et ce n'est pas bien. –

+0

ne sait pas comment le faire sscce puisque je ne suis même pas sûr de la bonne approche pour le résoudre – JLA

+0

Sans que nous puissions reproduire votre erreur, je doute que nous puissions comprendre votre erreur. Est-ce que votre question JPanels utilise null Layout? –

Répondre

2

Je devine, et tout ce que je peux faire est devinez sans sscce, mais si votre Mu ltipleChoice JPanel utilise une mise en page nulle, il ne sera pas capable de donner une valeur preferredSize décente à vos gestionnaires de mise en page en tenant compte des chevauchements de composants. Si oui, encore une fois la solution est de ne pas utiliser la mise en page nulle, presque jamais.

état Vous en commentaire:

Je sais que mon pote ... Mais comment puis-je être plus précis quand je ne sais pas grand-chose au sujet des sautes? J'utilise Windowbuilder et c'est la disposition donnée lors de la définition d'une disposition de conteneur à absolue.

  • "buddy"? En ce qui concerne «quand je ne sais pas grand-chose sur les balançoires»: alors, apprends-en plus sur Swing. Aller à la Layout Manager Tutorials et lire sur les gestionnaires de disposition. En ce qui concerne: «J'utilise Windowbuilder et c'est la disposition donnée lors de la configuration absolue d'un conteneur»: une partie de votre problème, comme vous l'admettez vous-même, est que vous ne comprenez pas encore complètement Swing et en particulier de ses gestionnaires de disposition, et l'une des raisons de ce problème est que vous utilisez un outil qui vous empêche d'avoir à comprendre cela. Je vous invite à ne pas utiliser WindowBuilder. Encore une fois lire sur les gestionnaires de disposition et apprendre à les utiliser. Vous ne serez pas désolé que vous l'ayez fait.
+0

Fais-moi confiance, j'ai hâte de tout savoir ... mais j'ai beaucoup de contraintes de temps car c'est un projet pour un cours d'été (tout un semestre serré dans quelques semaines) alors j'ai vraiment Je n'ai pas le temps d'avoir une pleine compréhension de chaque aspect de Swings; mais je comprends votre point de vue ... mon pote - je pense qu'il est utilisé en essayant d'être amical. Merci Hovercraft – JLA

+1

@ user2108393: Vous aurez besoin d'apprendre *** quelques *** importants concepts Swing si vous allez coder votre projet avec succès. Je suggérerais que les dispositions sont d'une importance critique et devraient donc être sur la liste courte des sujets que vous prévoyez d'étudier bientôt (comme commencer ce soir). Autrement, vous ne disposerez pas de suffisamment de connaissances pour publier une question à répondre, comme vous l'avez découvert. –

+1

@ user2108393 ce soir vendredi soir? peut attendre demain, mais ce que disent les aéroglisseurs est vrai, les gestionnaires de mise en page sont un must, et ils ne sont pas trop difficiles, le code sera plus simple car vous déléguerez des responsabilités à layoutManagers. si vous supprimez la ligne setLayout (null), vous verrez que ce sera mieux, windowsBuilder a une option pour setLayout – nachokk

Questions connexes