Joine Music

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Saturday, 17 March 2007

Sun Tech Days (London), Day 2, Report 4 - Extreme GUI Makeover

Posted on 11:10 by Unknown
Note: My battery ran out half way through this session but I think what I got is worth putting up. You can get the source and slides from the session when it was done at JavaONE 2006 here.

Slightly worryingly the metaphor chosen for this presentation is to compare your java app and your daughter. You love her and spend lots of time on her right? You want her to look good right? Errrrrr OK... Things get a little safer and we get down to the code... Cultural differences are a wonderful thing.

Java 2D Basics

Get the Graphics2D object and then you can change the rendering context. E.g. stroke (lines), fill, composite (overlap two images), transform, clip (don't show the whole picture based on a certain shape) and rendering hints (e.g. anti aliasing)

Example code: [Shows fill and clip. First fill with a gradient and then clip with a round rectangle.]

Example code: [Shows Composition. AlphaComposite class. SOMetimes you want to show the source, sometimes the destination and sometimes both. Once ou have set the composite ( with setComposite( ) ) you can set the overlap of the image.]

SwingX Project
Java has a very strict process if you want to change the default behavious of a Java class. Sometimes you want to extend of change the basic behaviour but to follow JCP can tajke 2 years. Swing Labs was created on java.net which contains several projects including SwingX which has very basic components which extend basic components extending basic swing (e.g. JXTable which makes sorting and highlighting is easy).

See the code: [Shows the SwingXDemo from Netbeans]

There are native look and feels for different platforms

Timing Framework
We are all fans of cartoons and animation makes your application more "adorable". There is a swing class called Timer (in javax.swing). It has an actionPerformed( ) method which is called when time passed and you do some animation.

But you have no easy way to define the diration of your animation. Also, what if ou want to make your app go in reverse? There is no way in Timer. The Timing Framework was created (on java.net)
  • Cycle: This defines how long an animation will last.
  • Envelope: You also define how often your callback method is called.
  • TimingTarget: The new callback target - begin( ), end( ), timingEvent( fraction ) where fraction is the fraction of the total time passed since the last callback
First create a TimingTarget. Then create an Animator (with duration, repeatCount, repeatBehaviourand target as arguments). Then set the animation resolution (how often to call the TimingTarget) and the end behaviour.

Finally you call animation.start( ) to start the animation.

[Another demo from the Netbeans examples (Timing Examples project) - a button moves. Another demo - racetrack. This has sound.]

Welcome the Supemodel (A Mozilla Thuderbird Clone)
  • Sexy border - DropShadowBorder (extends basic border). You create a ShadowFactory to create a shadow for whatever you are shadowing.
  • If you use DropShadowPanel the shadows are made for you. It extends JPanel and just need to create a single ShadowFactory and then add things to the Panel. They will all have shadows created for you automatically.
  • CoolBar - Extends the standard JToolBar. Done by overriding the paintComponent( Graphics g ) method
  • CoolButton - extends JButton. Every JButton is a rectangle. CoolButtons need not be. Cool. You can even make them translucent... Apparently it's "pretty easy" by using Composite and set the opacity to 0.1f. Sweet.
  • Fade in and Fade out - Use the TimeController to use animation which you start when you detect the mouse has moved in and start again when the mouse moves out. You can do the same thing to make it step in and out of opacity...
  • Customising Fold Tree - override getTreeCellRendererComponent ( )
Running out of battery!... Ded.
Email ThisBlogThis!Share to XShare to Facebook
Posted in | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • (no title)
    The Significance and Importance of Quotes in JSTL EL I just spent a few hours debuggung a null pointer in a Portlet JSP I'm writing. It...
  • (no title)
    Agile Development Ramblings: Part I Introduction I've just completed my first Agile development project. We developed a fully functiona...
  • EJB 3.0 Outside the Container, Inside the JVM - Part 2: Configuring JPA Declaratively
    Welcome to part two of this blog entry introducing using EJB3.0 inside the JVM. Click here to view the first part. As we've seen, JPA ...
  • Reuse (ii): Definition of Done
    As I said in my previous post , our project has suddenly taken a new path. There are two bits of collateral which I'd recently produced...
  • Notes from the FindBugs BOF9231 at JavaOne 2007
    NOTE: These are my incomplete notes from the FindBugs BOF at JavaOne 2007. I got in late due to the crush outside so missed the start of th...
  • Writing Unit Tests to Ensure Your "@Transactional ... rollbackFor" Annotations are Honoured
    Thanks to Russ Hart for providing the info on how to get this to work.  I just cut and paste, and then blogged it. It's nice to write un...
  • (no title)
    Can Your Own Demo I found something great on t'internet the other day. I had been asked to do a demo of our new ystem to some users but...
  • JavaOne Bred Over-Enthusiasm...
    I want to build and fiddle with Wonderland , and my own JDK ! The problem is my graphics card sucks (I need acceleration) and I'm runnin...
  • Booting Apache Derby ("JavaDB") with your Java App's Startup
    If you're embedding the Derby RDBMS with your java desktop application and want it to start when you start your app, you need to make th...
  • STS and RTC – Getting them to Play Nice
    We’re developing our new app using Spring 3.0 RC1 and we want the best tools available. We’ve picked the following: SpringSource Tools ...

Categories

  • 0
  • 2008
  • ant maven pimp build javaone 2008
  • apple ipod touch
  • asm
  • blog new ruby
  • blogtag list
  • bond casinoroyale mashup mi6 film movie
  • build
  • bytecode
  • CI
  • cobertura
  • communityone 2008 nutter jvm scala jruby groovy davinci
  • communityone 2008 opensocial socialsite
  • communityone javaone keynote oreilly
  • configuration
  • cowley
  • css div layout column ie firefox safari example
  • custom
  • darkstar mpk20 wonderland java3d commaboration SL
  • dashboard rss communication news development
  • db2 database SQL max min howto tip
  • db2 database ibm lessons tips
  • db2 database load batch howto example
  • db2 import upload data howto command
  • debt technical java annotation
  • debugging tips javaone 2008
  • development web2.0
  • findbugs JavaOne 2008 pugh
  • findbugs JavaOne BOF notes
  • gafter closures java javaone notes
  • google trouble patriarchal patriarchy
  • groovy metaprogramming javaone 2008
  • grubby oss data generation project announce
  • guice javaone 2008
  • gwt maven howto example simple
  • howto
  • hudson
  • hudson CI javaone 2008
  • ibm
  • invokeDynamic jvm dynamic ruby javaone
  • itinerant web2.0 portable desktop
  • jacl was websphere wsadmin trace logging
  • james gosling sun java open source tech days second life SL
  • jar java manifest properties config howto tip
  • java
  • java applet javaone 2008 reloaded jnlp
  • java javafxscript javaone 2008 fxscript
  • java javaone 2007 07
  • java javaone 2008 bytecode cobertura asm singleton testability
  • javaone
  • javaone keynote gage schwarz javafx
  • javaone semantic web bof notes web3
  • jazz
  • jruby rails javaone charlesnutter thomasenebo
  • jruby ruby netbeans development
  • kill dead laptop computer rebuild restore
  • lessonslearned
  • mac osx java gui shellscript classpath problem solution
  • maven plugin unittest test packager
  • mylin mylar javaone eclipse 2008
  • netbeans development ide
  • netbeans development ide RC
  • netbeans maven2 profiling
  • netbeans ruby sun tech days visual web pack roman strobl
  • ola bini java javaone 2008 thoughtworks ruby jruby
  • openjdk java javaone javafx wonderland
  • overheard
  • pojo ejb3.0 jpa orm java example howto
  • rant
  • rest restful jsr311 java web2.0 javaone ts-6411
  • rome rss feed blog rss atom propono java javaone
  • rsa uml profile plugin howto
  • ruby inheritance example
  • ruby jruby rss xml hpricot
  • ruby unless example
  • scm
  • setup
  • subversion svn xp windows cleanup
  • sun java soa web2.0 netbeans opensource javacaps
  • sun tech days java derby database rdbms london
  • sun tech days london impressions
  • terracotta java javaone 2008 android gwt
  • tip
  • tips
  • vwp netbeans JPA howto
  • was jython scripting nfr ibm pmi jvm
  • was tpv jython scripting nfr ibm pmi
  • webrick ruby jruby actadiurna investigation code howto
  • workitem

Blog Archive

  • ►  2012 (1)
    • ►  October (1)
  • ►  2010 (8)
    • ►  November (1)
    • ►  October (3)
    • ►  June (1)
    • ►  May (1)
    • ►  February (1)
    • ►  January (1)
  • ►  2009 (9)
    • ►  December (1)
    • ►  November (5)
    • ►  March (2)
    • ►  February (1)
  • ►  2008 (22)
    • ►  December (1)
    • ►  November (3)
    • ►  May (15)
    • ►  March (1)
    • ►  January (2)
  • ▼  2007 (53)
    • ►  December (1)
    • ►  November (3)
    • ►  September (3)
    • ►  August (2)
    • ►  July (3)
    • ►  June (1)
    • ►  May (12)
    • ►  April (5)
    • ▼  March (13)
      • Project Acta Diurna - Harnessing RSS Goodness for ...
      • Sun Tech Days (London), Day 2, Report 4 - Extreme ...
      • Sun Tech Days (London): Day 2, Report 3 - Impressions
      • Sun Tech Days (London): Day 2, Report 2 - Derby DB
      • Sun Tech Days (London): Day 2, Report 1 - Gosling ...
      • Sun Tech Days (London): Day 1, Report 1 - First Im...
      • Running JRuby built from the trunk with Netbeans 6.0
      • Placing your config.properties outside your applic...
      • DB2: Show the schema version
      • Ruby with Foxes...
      • Truncating tables in DB2
      • DB2: Finding the maximum / minimum / average valu...
      • Showing a Table's Foreign Keys with DB2 Control Ce...
    • ►  February (7)
    • ►  January (3)
  • ►  2006 (35)
    • ►  December (8)
    • ►  October (1)
    • ►  August (1)
    • ►  July (5)
    • ►  June (8)
    • ►  May (3)
    • ►  April (7)
    • ►  March (2)
Powered by Blogger.

About Me

Unknown
View my complete profile