Fenêtre avec tapis roulant

dianeti Messages postés 5 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 19 janvier 2005 - 28 avril 2004 à 01:44
dianeti Messages postés 5 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 19 janvier 2005 - 29 avril 2004 à 02:11
Bonjour,
J'ai réalisé une fenêtre (à l'aide de Frame), avec les ascenceurs vertical et horizontal ( Scrollbars).
je veux y ajouter, à l'aide d'un programme, des dessins de rectangles reliés 2 à 2 par un trait pour occuper l'espace.

-1) Dois je considérer mes rectangles comme des composants et les ajouter à la fenêtre?

-2) Comment placer dans ma fenêtre un rectangle à un endroit donné?

Merci d'avance
# ya ke la prog ki amuse #

4 réponses

tlehoucq Messages postés 49 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 27 février 2006
28 avril 2004 à 08:44
Salut,

pour réaliser ce ke tu veux, il faut que tu "dessines" (en redefinissant la méthode paint) sur un panel et que tu l'ajutes a ta fenetre. Je te montre...:

T'auras d'abord une classe dérivant d'un panel:


public class monPanel extends JPanel
{
   
        //la tu mets ton constructeur et tes attributs si t'en as.
        ....

  public void paintComponent(Graphics g)
  {
        super.paintComponent(g);

        //dessin d'un rectangle de couleur noir
        g.setColor(Color.black);
        g.fillRect(0,0,tailleLargeur,tailleHauteur); //pour rectangle plein
  }

}



Ensuite ta classe principale:


public class Test extends JFrame
{
     ....

    Container c=getContentPane();
    c.setLayout(new FlowLayout());
    c.add(new MonPanel());
    ...
}



J'espere que ça pourra t'aider, si tu veux créer tes rectangles au fur et à mesure du pgm, il suffit de créer plusieurs panel dans ta fenêtre
0
dianeti Messages postés 5 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 19 janvier 2005
28 avril 2004 à 16:31
ReSalut,
(Merci à toi tlehoucq pour ton aide.)

J'ai une nouvelle question à poser chers amis:

:blush) comment faire pour afficher un message (genre label)
lorsque je pointe sur un rectangle du graphique avec la souris?

# ya ke la prog ki amuse #
0
tlehoucq Messages postés 49 Date d'inscription mercredi 17 mars 2004 Statut Membre Dernière intervention 27 février 2006
28 avril 2004 à 16:59
2rien!

Bah dans ce cas la il faut ke tu mettes un MouseListener sur ton rectangle(panel) et que tu implementes les methodes correspondantes.

public class monPanel extends JPanel implements MouseListener
{
       JLabel monLabel;

//la tu mets ton constructeur et tes attributs si t'en as.
....

  public void mouseClicked(MouseEvent e){}
  public void mousePressed(MouseEvent e){}
  public void mouseReleased(MouseEvent e){}
  public void mouseEntered(MouseEvent e)
  {
      //la tu affiches ton label
      monLabel.setOpaque(true);
  }
  public void mouseExited(MouseEvent e){}
  {
      //la tu effaces ton label
      monLabel.setOpaque(false);
  }

}


voila normalement tu devrais y arriver...
N'hésites pas si t'as des questions
0
dianeti Messages postés 5 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 19 janvier 2005
29 avril 2004 à 02:11
J'ai vu qu'on pouvait réaliser un volet défilant avec les barres de défilement.
syntaxe par exemple:
-------------------------------------------
JScrollPane scroll = new JScrollPane(zone, // le volet défilant associé a la
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, // zone d'affichage
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
--------------------------------------------------

Et normalement les barres doivent s'afficher si les dimensions de 'zone' sont supérieures à celles de 'scroll'.

Mais j'y arrive pas!!! :question)
'zone' est un Panel (j'y ajoute des rectangles manuellement) de taille variable, je suppose.

'scroll' contient 'zone' et est placé dans le conteneur principal.
------------------------------------------
...
Dimension pref = new Dimension(50,50);
scroll.setPreferredSize(pref);
setContentPane(scroll);

mainPane.add(scroll);
------------------------------------------

Ici je cherche à ce que mon interface marche comme une zone de texte avec barres de défilement qui apparraissent si nécessaire.

Que me suggèrez vous?

# ya ke la prog ki amuse #
0
Rejoignez-nous