swing - How to properly dispose graphics context - do I need try and finally? (Java 1.7) -


how dispose graphics context - need use try , finally? simple example:

public void paint(graphics g) {      graphics2d g2d = (graphics2d) g.create();      try {          g2d.drawline(0, 0, 10, 0);      } {         g2d.dispose();     } } 

edit

this example java.awt.window class:

     /**      * {@inheritdoc}      *      * @since 1.7      */     @override     public void paint(graphics g) {         if (!isopaque()) {             graphics gg = g.create();             try {                 if (gg instanceof graphics2d) {                     gg.setcolor(getbackground());                     ((graphics2d)gg).setcomposite(alphacomposite.getinstance(alphacomposite.src));                     gg.fillrect(0, 0, getwidth(), getheight());                 }             } {                 gg.dispose();             }         }         super.paint(g);     } 

as see, constructors used pretty simple, try , finally still exits. think practice use them.

in simple example, there's no need try..finally; g2d.drawline not throw exceptions.1 however, if body of try might throw exception, execute return statement, or otherwise abnormally terminate paint method, recommend try..finally ensure context disposed.

1 it could, suppose, throw outofmemoryerror or other unchecked exception. if that, though, disposing of graphics2d context least of problems.


Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -