Tom's Guide > Forum > Programmation > [java - interface] probleme rafraichissement + textAera

[java - interface] probleme rafraichissement + textAera

Forum Programmation : [java - interface] probleme rafraichissement + textAera

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

J'ai deux petits problemes sur mon application Java concernant mon interface :

Le premier est un probleme de rafraichissement, lorsque je clique sur un bouton de mon menu, je remplace l'ancien JPanel par le nouveau JPanel dans le JFrame (contenant en plus du JPanel, le menu).
Le changement s'effectue mais si on ne bouge pas a un peu les dimensions de la fenetre (pour rafraichir), rien ne s'affiche..........une fois qu'un JPanel a été affiché une fois correctement, il s'affiche bien apres (et avant de fermer l'appli bien sur).

Voici le code que j'ai mis mais ca ne change rien :

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==boutonAjoutStructure)
{
if(unPanelPrincipal.getComponentZOrder(formulaireSlide)==-1)
{
unPanelPrincipal.removeAll();
unPanelPrincipal.add(laBarreMenu,BorderLayout.NORTH);
unPanelPrincipal.add(formulaireSlide,BorderLayout.CENTER);

unPanelPrincipal.repaint();
formulaireSlide.repaint();
}
}


Mon deuxieme probleme vient de mon TextAera, lorsque je met du text trop loin horizontalement, la grandeur du textAera augmente horizontalement avec. De même pour quand je descend trop bas, le textAera augmente en hauteur.

Pour l'horizontal, j'ai trouvé une méthode (setLineWrap(true);) mais j'ai rien trouvé pour l'horizontal.
J'ai declaré mon textAera comme ca :

JTextArea text= new JTextArea(5,20);


Merci d'avance
a+

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Bon ça fait un moment que je n'ai plus toché au Java, mais il me semble que le repaint ne fait que poster un message de repaint qui peut donc être diféré voire pas pris en compte pour optimisation.
Je crois qu'il faut appeler la méthode update() qui efface tout et donc réaffiche ce qu'il faut.
Mais attention, du coup, tu perds l'optimisation. Donc le mieux serait de redéfinir la méthode paint de ton objet si tu veux bien optimiser ton affichage par rapport à ton application.
Sinon pour la taille, tu mets ton objet dans layout ?
Sinon as-tu essayé de régler le setMaximumSize() pour mettre une taille maximale à ton textarea ?

Répondre à CRicky

Bonjour,

Merci, pour le rafraichissement, update fonctionne (dans mon cas, pour l'instant, j'ai pas vraiment besoin d'optimiser donc c'est bon).

Concernant, mon TextArea, j'ai essayé le maximumSize et divers autres methodes mais je n'y arrive.
Le textArea est dans un GridBagLayout avec comme contraintes un Remainder( car c'est mon dernier element) et un HORIZONTAL pour qu'il s'etende sur son espace (mais meme si je le retire c'est pareil).

merci encore
a+

Répondre à cbil

Fixe les 3:
setMinimumSize()
setMaximumSize()
setPreferredSize()
(surtout les 2 derniers)

et si ça ne marche toujours pas, ajoute le setColums() et setRows() fixés à une certaine valeur.
Sinon essaie de jouer sur les layouts.

Répondre à CRicky

Merci,

Pour regler le probleme, il fallait mettre setPreferredSize(), le TextArea ne bouge pas mais si on ecrit du texte avec une hauteur il n'est pas visible.... (les lignes depassant la hauteur du JTextArea ne sont pas visible)

J'ai donc ajouté une JScrollPane, mais elle ne fonctionnait pas avec le JTextArea.

En fait, pour mon probleme il fallait mettre le JScrollPane sans setPreferredSize.
(Il me semblait pourtant que j'avais deja essayer le JScrollPane mais bon maintenant ca marche ;-) )


JScrollPane barreVerticale = new JScrollPane(texteTxtSaisie);
add(barreVerticale,sesContraintes);



Merci beaucoup a toi !
a+

Répondre à cbil
Tom's Guide > Forum > Programmation > [java - interface] probleme rafraichissement + textAera
Aller à :

Il y a 1566 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens