Problème d affichage d'un JTextPane

Résolu
tarekinf Messages postés 7 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 27 juin 2010 - 12 mai 2010 à 15:29
tarekinf Messages postés 7 Date d'inscription lundi 16 novembre 2009 Statut Membre 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)
{

}

}

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
12 mai 2010 à 16:23
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
tarekinf Messages postés 7 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 27 juin 2010
12 mai 2010 à 19:19
coucou
Merci beaucoup!!
sa marche trébiennnnnn
encor une foi merci!!!!!!
salutttt
Rejoignez-nous