Bonjour,
j'ai l'impression d'avoir eu ce problème des 100 aine de fois (j'éxagère ptet un peu ...)
Enfin bref j'ajoute un JPanel sur un autre (en fait j'enleve tout et je remet un liste de composant updater) ... et malgré un repaint (voir plusieurs) je n'arrive pas a le faire s'afficher (sauf si gros repaint sur le Frame (resize ect ...))
Bon une fois pour toute je veux connaitre la solution! lol
un peu de code si ca peut aider :
ma fonction qui enleve et remet tout et dont l'appel devrais updater mon JPanel
comme vous pouvez le voir j'ai essaé le repaint sur le JPanel lui même, sur celui qui le contient aussi ...
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 public void updateBAAreasView() { System.out.println("BOOOOOOUUHHHHAAAA"); this.removeAll(); this.add(_genePanel); ArrayList baAreaList = _baparent.getParam().getBAAreaList(); for (int i = 0; i <baAreaList.size(); i++) { System.out.println("i :"+i); this.add((BestAlignementArea)baAreaList.get(i)); } _baparent.repaint(); this.repaint(); }
mon paintComponent et surchargé :
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 public void paintComponent(Graphics g) { super.paintComponent(g); int pixDelta = (int)(_posPan.getDeltaPosition()*(this.getWidth()-10))+5; drawPeriod(g, pixDelta); } private void drawPeriod(Graphics g, int pixDelta) { float nbPeriod = _posPan.getNbPeriod(); for (int j = 0; j<= nbPeriod; j++) { if (pixDelta+(int)((1/(float)(nbPeriod))*(this.getWidth()-10)*j ) <= this.getWidth()-5) g.drawLine((int)((1/(float)(nbPeriod))*(this.getWidth()-10)*j + pixDelta), 5, (int)((1/(float)(nbPeriod))*(this.getWidth()-10)*j + pixDelta), this.getHeight()-5); else g.drawLine((int)((1/(float)(nbPeriod))*(this.getWidth()-10)*j ) - (this.getWidth() - 5 - pixDelta)+5, 5, (int)((1/(float)(nbPeriod))*(this.getWidth()-10)*j ) - (this.getWidth() - 5 - pixDelta)+5, this.getHeight()-5); } }
Partager