ollone Part of the 'One brothers Profil : Vieux de la vieille | Salut !
J'ai un souci avec la méthode paintComponent(...) d'un JSplitPane. Ce dernier est customisé afin d'accueillir en son Divider, une ToolBar...
Mon souci est le suivant : l'affichage de mon JSplitPane fait pêter les 100% de mon CPU Il est clair que c'est la méthode paintComponent(...) qui ne s'arrête jamais d'être appelée.
Le flag de la méthode m'a permis de me rendre compte que getDividerLocation() me retourne tjrs 0 !!!
Help siou plait, j'ai du mal à concevoir le problème, j'suis pas fortiche en 'painting issues'...
Code :
- private class MySplitPane extends JSplitPane {
- public MySplitPane(Component comp1, Component comp2) {
- super(JSplitPane.VERTICAL_SPLIT, comp1, comp2);
- JToolBar toolbar = new JToolBar();
- /*
- toolbar.setBorder(BorderFactory.createCompoundBorder(
- BorderFactory.createMatteBorder(1,0,0,0,new Color(102,102,102)),
- BorderFactory.createMatteBorder(0,0,1,0,new Color(102,102,102))));
- toolbar.setBorderPainted(true);
- */
- toolbar.setBorder(BorderFactory.createEmptyBorder(0,3,0,0));
- toolbar.setFloatable(false);
- toolbar.setRollover(true);
- toolbar.setBackground(Color.white);
- JButton button1 = new JButton();
- JButton button2 = new JButton();
- JButton button3 = new JButton();
- JButton button4 = new JButton();
- JButton button5 = new JButton();
- button1.setIcon(new ImageIcon("images/gras.png" ));
- button2.setIcon(new ImageIcon("images/italic.png" ));
- button3.setIcon(new ImageIcon("images/url.png" ));
- button4.setIcon(new ImageIcon("images/image.png" ));
- button5.setIcon(new ImageIcon("images/icons.gif" ));
- button1.setBackground(Color.white);
- button2.setBackground(Color.white);
- button3.setBackground(Color.white);
- button4.setBackground(Color.white);
- button5.setBackground(Color.white);
- toolbar.add(button1);
- toolbar.add(button2);
- toolbar.add(button3);
- toolbar.add(button4);
- toolbar.add(button5);
- setDivider(toolbar);
- }
- private void setDivider(Component comp) {
- try {
- addImpl(comp, JSplitPane.DIVIDER, 0);
- }
- catch (IllegalArgumentException e) {
- System.out.println("> Custom Divider Problem : "+e.toString());
- }
- }
- protected void paintComponent(Graphics g) {
- super.paintComponent(g);
- if (getDividerLocation() != getLastDividerLocation()) {
- System.out.println("> location,last = "+getDividerLocation()+","+getLastDividerLocation());
- if (this.getMaximumDividerLocation() > 100) {
- setDividerLocation(this.getMaximumDividerLocation() - 50);
- setLastDividerLocation(this.getMaximumDividerLocation() - 50);
- }
- else {
- setDividerLocation(2*(this.getMaximumDividerLocation()/3));
- setLastDividerLocation(2*(this.getMaximumDividerLocation()/3));
- }
- }
- }
- }
|
Merci d'avoir lu jusque là  Message édité par ollone le 19-11-2003 à 18:32:32
|