IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

JScrollPane problème d'affichage


Sujet :

AWT/Swing Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 42
    Par défaut JScrollPane problème d'affichage
    Bonjour à tous,
    dans un une classe qui extends une JTable je construit une JTable dans laquelle je dessine des rectangles dedans. Ensuite, je créé une JScrollPane sur cette JTable, le problème c'est que la barre horizontal de ma JScrollPane n'apparaît pas qd des rectangles dépasse de la surface...

    Code de ma class construisant ma JTable et dessinant les rectangles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    public class TableHeure extends JTable {
    //	contient tous les rectangles qui dessine un evenement
    	private Rectangle[] tousRectangle;
    	private LinkedList list;    //contient tous les evenements du jour
    	private JPopupMenu menu;    //menu deroulant lors d'un clique droit
    	private JMenuItem details;  //action possible sur un evenement
    	private JMenuItem modifier; //action possible sur un evenement
    	private JMenuItem supprimer;//action possible sur un evenement
    	private TableHeure jtable;  //utilise lorsque l'ecouteur se met en route
    	/**
             * Constructeur. En premier lieu il construit la JTable
             * @param t
             * @param s
             * @param date a laquelle on devra cree cette JTable
             */
    	public TableHeure(Object[][] t,String[] s,MaDate date) {
    		super(t,s); //cree la JTable
    		jtable = this;
    		addMouseListener(getMouseListener()); //ajout un ecouteur a cet objet
    		list = new ActionEvents().getEvents(date);
     
    		//test si la liste est vide on stoppe
    		if( list == null)
    			return;
     
    		tousRectangle = new Rectangle[list.size()];
    		//format utilise
    		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH'h'mm ");
    		Date DDebutPrec = null;  //utilise dans le "for"
    		Date DFinPrec = null;    //utilise dans le "for"
    		int decalage = 30;       //coin superieur gauche du rectangle
     
    		//on construit les rectangles
    		for(int i = 0; i < list.size();i++) {
    			Date DDebut = null;
    			Date DFin = null;
    			try {
    				DDebut = format.parse(((Events)list.get(i)).getDateDebut());
    				DFin = format.parse(((Events)list.get(i)).getDateFin());
    			} catch (ParseException e1) {
    				e1.printStackTrace();
    			}
     
    			/**
                             * On test en regardant si l'evenement precedent n'est pas a cheval
                             * sur l'evenement i. Si tel est le cas, on decale sa position. 
                             * On ne peut que regarder le precedent car les evenements sont tries
                             */
    			if (DDebutPrec != null && ( 
    			  (DDebut.compareTo(DDebutPrec) >= 0 && DDebut.compareTo(DFinPrec) <=0) ||
    			  (DFin.compareTo(DDebutPrec) >= 0 && DFin.compareTo(DFinPrec) <=0))) {
    				decalage+=95;
    			}
    			//"nbrMinute" sert a placer correctement dans notre JTable
    			int nbrMinutes = DDebut.getHours() * 60 + DDebut.getMinutes();
    			int hauteur = DFin.getHours() * 60 + DFin.getMinutes();
    			tousRectangle[i] = 
    				new Rectangle(decalage,nbrMinutes/3 ,93,(hauteur-nbrMinutes)/3);
    			        //"nbrMinutes/3" on divise en 3 pour respecter l'echelle de
    					// notre JTable.Ainsi le dessin correspondra aux heures.
    			DDebutPrec = DDebut;
    			DFinPrec = DFin;
    		}
     
    		//construction de notre Menu deroulant
    		menu = new JPopupMenu();
    		details = new JMenuItem("Details");
    		supprimer = new JMenuItem("Supprimer");
    		modifier = new JMenuItem("Modifier");
    		menu.add(details);
    		menu.add(supprimer);
    		menu.add(modifier);
    	}
     
    	public void paint(Graphics g) {
    	     super.paint(g);
    	     //on teste si il y a des evenements
    	     if (tousRectangle == null)
    	    	 return;
     
    	     //on dessine les rectangles
    	     for(int i = 0; i < tousRectangle.length;i++) {
    	    	 g.setColor(Color.LIGHT_GRAY);
    		     g.fill3DRect(tousRectangle[i].x,tousRectangle[i].y,
    		    		 tousRectangle[i].width,tousRectangle[i].height, true);
    			 g.setColor(Color.black);
    			 String sujet = ((Events)list.get(i)).getInfo()[0]; //contient le sujet
    			 g.drawString(sujet, tousRectangle[i].x + 5, tousRectangle[i].y + 12);
    	     }
    		}
    le bout de code dans l'autre class qui me créé ma JScrollPane:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    listeHeures = new TableHeure(tableauObject,titre,date);
    		//construit une scrollpanne et l'ajout au panel
    		scrollPane = new JScrollPane(listeHeures);
    		scrollPane.setPreferredSize(new Dimension(230,350));
    		this.add(scrollPane);
    Voila un aperçu du programme, regarder la barre horizontal n'apparaît pas:
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/06/2008, 10h33
  2. Problème d'affichage dans un JSCrollPane
    Par franklin626 dans le forum Composants
    Réponses: 2
    Dernier message: 24/04/2008, 11h44
  3. JScrollPane : problème d'affichage
    Par Gaaston dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 28/01/2008, 19h25
  4. [Swing] Problème d'affichage dans un JScrollPane
    Par Adrien22 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/04/2006, 14h36
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo