Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Developing User Interfaces (DUI) Chris North cs3724: HCI GUI Development: Goals 1. Learn general GUI programming concepts • • • • • GUI components Layout Event-based programming Graphics Animation 2. Learn Java • • • • • Swing Layout managers Listerners 2D graphics Threads Then: can learn other languages quickly • VB, C#, Xwin, Java 49 Intro to Java Why Java? Java materials • Java 2 = sdk 1.2 or better • http://java.sun.com/j2se/ • Documentation: • http://java.sun.com/docs/ • Tutorials, reference, API • Borland JBuilder 6 • http://www.borland.com/jbuilder/personal/ • Free! Cross between VB and VC++ Java differences • • • • • • • • • • • • Basic statements identical to C++ Object-oriented only! No .h files main() is inside a class No global variables No pointers (object references only) No delete: automatic garbage collection Single inheritance only, “interfaces” Applet/application GUI: AWT, Swing Packaging Error Handling, exceptions (try, catch) • E.g. Array bounds checking • Security • Components: beans Java compiling • Code: • hello.java (text file) • Compile: • javac hello.java • Creates: hello.class (byte code) • Run: • java hello • Java virtual machine, interpets/compiles (machine code) • Packaging: jar • Or use JBuilder, like VC++ Java Applications • Run from command line • hello.java: class hello { public static void main(String[] args){ System.out.println(“Hello World!”); } } • javac hello.java • java hello Hello World! Typically create objects • hello.java: class hello { public static void main(String[] args){ // Create and use objects hello h = new hello(); … } public hello(){ // Constructor … } … } Many Classes • Compile each separately • Can be main( ) in any/all classes • hello.java: class hello { goodbye g; public static void main(String[] args){ … } • goodbye.java: class goodbye { public static void main(String[] args){ … } Hmmm… • dir hello.class goodbye.class blah.class foo.class bar.class areyouawakein.class • Java ??? • RunMe.bat: java hello JBuilder Java Applets • Run in a web browser • hello.java: import javax.swing.*; class hello extends JApplet { public void init(){ getContentPane().add( new JLabel(“Hello World!”) ); } } • javac hello.java • appletviewer hello Hello World! Java Applets in HTML • hello.html: <html><body> <applet code=“hello.class” height=100 width=200> Need java. </applet> </body></html> hello.html • Put hello.html and hello.class on website • Java plug-in Hello World! Applet Methods • • • • • init( ) - initialization start( ) - resume processing (e.g. animations) stop( ) - pause destroy( ) - cleanup paint( ) - redraw stuff (‘expose’ event) Applet Security • • • • No read/write on client machine Can’t execute programs on client machine Communicate only with server “Java applet window” Warning • Certificates Upcoming Java Topics • • • • • • GUIs: Swing, AWT, MVC Event handling, listeners Graphics Animation, threads Components, JavaBeans Databases, JDBC