Problème d affichage d'un JTextPane [Résolu]

Messages postés
7
Date d'inscription
lundi 16 novembre 2009
Dernière intervention
27 juin 2010
- - Dernière réponse : tarekinf
Messages postés
7
Date d'inscription
lundi 16 novembre 2009
Dernière intervention
27 juin 2010
- 12 mai 2010 à 19:19
bonjour
je suis débutons en java et j'ai un problème !
le problème c'est que lorsque j'insère un JtextePane a mon interface avec un mouselistener ....le text s'affiche puis après un clic( en dehors de JTextPane) il devient invisible!
aidé moi s.v.p
voici mon code :



import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class test
{
public static void main(String[] args)
{
Fenetre f=new Fenetre();
ButtonsAction BA= new ButtonsAction(f);
f.getPanel().addMouseMotionListener(BA);
f.getPanel().addMouseListener(BA);
}
}


class Fenetre extends JFrame
{

private Panel panel=new Panel();
public Fenetre()
{
super("Texte drage");
setSize(1000,680);
setLayout(new BorderLayout(10,10));
add("Center",panel);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);

}

public Panel getPanel()
{
return panel;
}
}


class Panel extends JPanel
{

private int a=0,b=0,c,d;


public Panel()
{
setLayout(null);
}



public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
Stroke stroke = g2.getStroke();
float dash1[] = {10.0f};
g.setColor(Color.black);
g2.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f));
g2.drawRect(a-2,b-2,c-a+2,d-b+2);
g.setColor(Color.white);
g2.fillRect(a,b,c-a,d-b);
g2.setStroke(stroke);

}
public void ajouterT()
{
JTextPane texte =new JTextPane();
JScrollPane l = new JScrollPane(texte);
texte.setFont(getFont().deriveFont((float) 18));
texte.setBackground(Color.white);
texte.setSize(c-a,d-b);
texte.setLocation(new Point(a,b));
add(texte);
}
public void setA(int x)
{
a=x;
}
public void setB(int x)
{
b=x;
}
public void setC(int x)
{
c=x;
}
public void setD(int x)
{
d=x;
}
}




class ButtonsAction implements ActionListener,MouseListener,MouseMotionListener

{
private Fenetre f;

public ButtonsAction(Fenetre f)
{
this.f=f;

}

public void mouseDragged(MouseEvent e)
{

if (e.getSource()== f.getPanel())
f.getPanel().setC(e.getX());
f.getPanel().setD(e.getY());
f.repaint();
}
public void mouseMoved(MouseEvent e)
{
if (e.getSource()== f.getPanel())
f.getPanel().setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

}
public void mouseReleased(MouseEvent e)
{
if (e.getSource()== f.getPanel())
{ f.getPanel().setC(e.getX());
f.getPanel().setD(e.getY());
f.getPanel().ajouterT();
f.getPanel().setC(0);
f.getPanel().setD(0);
}

}
public void mouseClicked(MouseEvent e)
{
if (e.getSource()== f.getPanel())
f.getPanel().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}

public void mousePressed(MouseEvent e)
{
if (e.getSource()== f.getPanel())
f.getPanel().setA(e.getX());
f.getPanel().setB(e.getY());
f.getPanel().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
public void mouseExited(MouseEvent e)
{


}
public void mouseEntered(MouseEvent e)
{

}
public void actionPerformed(ActionEvent e)
{

}

}
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
3
Merci
Salut,

Tout d'abord, utilises la fonction paintComponent et non paint pour redéfinir l'affichage d'un composant SWING.

Ensuite, n'oublie pas d'appeler la fonction de la classe mère... :
public void paintComponent(Graphics g) 
{ 
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g; 
Stroke stroke = g2.getStroke(); 
float dash1[] = {10.0f}; 
g.setColor(Color.black); 
g2.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f)); 
g2.drawRect(a-2,b-2,c-a+2,d-b+2); 
g.setColor(Color.white); 
g2.fillRect(a,b,c-a,d-b); 
g2.setStroke(stroke); 

}


Je ne sais pas si ton problème vient de là, mais vu ce que tu nous décris là, y'a de forte chance.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
7
Date d'inscription
lundi 16 novembre 2009
Dernière intervention
27 juin 2010
0
Merci
coucou
Merci beaucoup!!
sa marche trébiennnnnn
encor une foi merci!!!!!!
salutttt
Commenter la réponse de tarekinf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.