1 pièce(s) jointe(s)
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:
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:
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:
http://www.developpez.net/forums/att...1&d=1163065796