Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of 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