© ITS, Inc. [email protected] Java Graphics Learn Java Applet and User Interface AWT Swing.
Intro to Java Java Applications Swing Class Graphics.
-
Upload
dorthy-shields -
Category
Documents
-
view
236 -
download
0
Transcript of Intro to Java Java Applications Swing Class Graphics.
Intro to Java
Java ApplicationsSwing Class
Graphics
Java Outline
• Today– Intro and Applications– GUI
• Client / Server • RMI, JDBC
2
JAVA Implementation
3
Java program
Java program
VM
Java Cmds
Java program
VM
Java Cmds
Java program
VM
Java Cmds
SPARC PowerPC Intel
Operations Environments
• Applications program (~DOS window)– supports file access
• Applet (browser) – no longer generally supported– supports Internet linkages.
4
Building Java Applications Using Java Development Kit
• Get a copy of the JDK (www.oracle.com, etc.)• Install the development kit (tools and classes)• Create MyApp.java source file– text editor (notepad, etc.)– winedit, Café, etc.
• Compile .java file to create .class file– javac MyApp.java
• Run application (.class file) through java VM– java MyApp
5
Building Java Applications Using Java IDEs
• NetBeans– Available from netbeans.org
• Eclipse– Available from www.eclipse.org
• jCreator le– available from jcreator.com– jcreator pro – academic license $35
• jDeveloper– available from www.oracle.com/technetwork/developer-
tools/jdev• many others
Sample Java App
7
G:\Data\Java\MyHelloApp>type MyHelloApp.javaclass MyHelloApp { public static void main (String argv[]) { String message[] = new String[2]; message[0] = "Welcome to CS423"; message[1] = "The subject is JAVA!";
System.out.println (message[0]); System.out.println (message[1]); } }
MyHelloApp Implementation
8
MyHelloApp.java
MyHelloApp.class
VM
machine code
MyHelloApp.class
Java compiler
Java byte code
Sample Java App
9
G:\Data\Java\MyHelloApp>javac MyHelloApp.java
G:\Data\Java\MyHelloApp>java MyHelloAppWelcome to CS423The subject is JAVA!
G:\Data\Java\MyHelloApp>
MyHelloApp.class
Get Input from User
11
import java.io.*;
class InputApp { InputApp () { DataInputStream dis = new DataInputStream (System.in); String sIn = " "; String sOut = " "; File fIn; File fOut; FileInputStream fis; FileOutputStream fos; int iNumBytesRead; byte[] ab;
Get Input from User
12
System.out.println ("*-------------------------------------------*"); System.out.print ("Enter Source File Name Here: "); System.out.flush (); try {sIn = dis.readLine ();} catch (Exception e) {System.out.println ("Exception on input file name"
+ e);} System.out.print("Enter Destination File Name Here: "); System.out.flush (); try {sOut = dis.readLine ();} catch (Exception e) {System.out.println ("Exception on output file name"
+ e);}
Get Input from User
13
try { fIn = new File (sIn); fis = new FileInputStream (fIn); fOut = new File (sOut); fos = new FileOutputStream (fOut); ab = new byte[2048]; while ((iNumBytesRead = fis.read (ab)) != -1) { fos.write (ab, 0, iNumBytesRead); } fis.close (); fos.close (); }catch (Exception e) {System.out.println ("Exception during copy: " + e); }
Get Input from User
14
System.out.println ("Data copied from " + sIn + " to "+ sOut);
System.out.println ("*-------------------------------------------*");
}
public static void main (String args[]) { new InputApp (); } }
Get Input from User
15
G:\Data\Java\InputApp>java InputApp*-------------------------------------------*Enter Source File Name Here: books_db.txtEnter Destination File Name Here: My_list.txtData copied from books_db.txt to My_list.txt*-------------------------------------------*
G:\Data\Java\InputApp>
Swing Components
• Defined in package javax.swing– Pure Java components
• AWT components tied to local platform GUI– UNIX java windows look like X windows– Windows java windows look like Windows
windows (??)– etc.
• Swing defines a common look and feel for Java.
Product.java
// From Java: How to Program - Deitel and Deitel// Calculate the product of three integersimport javax.swing.JOptionPane;public class Product { public static void main( String args[] ) { int x, y, z, result; String xVal, yVal, zVal; xVal = JOptionPane.showInputDialog( "Enter first integer:" ); yVal = JOptionPane.showInputDialog( "Enter second integer:" ); zVal = JOptionPane.showInputDialog( "Enter third integer:" );
Product.java
x = Integer.parseInt( xVal );
y = Integer.parseInt( yVal );
z = Integer.parseInt( zVal );
result = x * y * z;
JOptionPane.showMessageDialog( null,
"The product is " + result );
System.exit( 0 );
}
}
Product Output(s)
JOptionPane
• Similar to windows message boxes• Types of Option Panes:
showConfirmDialog(null,message,title,optionType,msgType);
Asks a confirming question, like yes/no/cancel.
showInputDialog(message);
Prompt for some input.
showMessageDialog(null, message);
Tell the user about something that has happened.
showOptionDialog(....);
The Grand Unification of the above three.
20
Additional Swing Options
JOptionPane.showMessageDialog(null, "This is an alert", "Alert", JOptionPane.ERROR_MESSAGE);
JOptionPane.showConfirmDialog(null,
"Is that your final answer?", "Choice Dialog",
JOptionPane.YES_NO_OPTION);
Additional Swing Options Object[] options = { "Lady", "Tiger" };
choice = JOptionPane.showOptionDialog(null,
"What will it be -\nThe Lady or the Tiger?", "Decision",
JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
null, options, options[0]);
if (choice == 0)
JOptionPane.showMessageDialog( null, "You chose the Lady", "Result", JOptionPane.PLAIN_MESSAGE );
else
JOptionPane.showMessageDialog( null, "You chose the Tiger", "Result", JOptionPane.PLAIN_MESSAGE );
Additional Swing Options
Object[] possibleValues = { "First", "Second", "Third" };
Object selectedValue = JOptionPane.showInputDialog(null,
"Choose one", "Input", JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]);
Graphics in Applications
• Must include a main() method• Must extend the AWT Frame class, or swing JFrame class
24
HelloWorldWindow
25
import java.awt.*;import java.awt.event.*;
public class HelloWorldWindow implements WindowListener{ public HelloWorldWindow() { myFrame f=new myFrame(); f.addWindowListener (this);
} public void windowClosing(WindowEvent e) { System.out.println ("Closing Window"); System.exit(0); }
HelloWorldWindowclass myFrame extends Frame{ myFrame() { this.setSize(300, 200); this.show(); } public void paint(Graphics g) { String str = "A Windows version of Hello,
World"; g.drawString(str, 25, 75); }
public static void main(String[] args) { Frame f = new HelloWorldWindow();
f.resize(300, 200); f.show();
}}
}
HelloWorldWindow Output
public void paint (Graphics g)
• Provides an initial presentation of Graphics• Works on Graphics object – (like device context).– Place to store settings for screen output (text,
images. etc.)
• Must be regenerated following changes.
28
Event Driven Programming
• Operating System recognizes an event• Sends a signal to appropriate object• Object receives event notification and calls
appropriate function
public void windowClosing(WindowEvent e) { System.out.println ("Closing Window"); System.exit(0); }
29
Object Layout
• BorderLayout (default for Frames)• FlowLayout (default for Panels)• GridLayout• GridbagLayout• CardLayout• Fixed:– object.reshape (x, y, width, height);
30
nuTextTest Example
Linux
Windows
NuTextTest2.java
import javax.swing.*;import java.awt.*;import java.awt.event.*;
public class NuTextTest2 extends JFrame { public NuTextTest2() { setTitle("NuTextTest2"); Container p = getContentPane();; p.setLayout(new FlowLayout()); TickButton = new Button("Tick"); p.add(TickButton); TickButton.addActionListener(
new ActionListener() { public void actionPerformed (ActionEvent e) { int minutes = Integer.parseInt(minuteField.getText()); minutes += 1; String min = String.valueOf(minutes); minuteField.setText(min); } } //end of ActionListener ); //end of TickButton
NuTextTest2.java
SetTime = new Button("Set Time"); p.add(SetTime); SetTime.addActionListener( new ActionListener() { public void actionPerformed (ActionEvent e) {
String tim = hourField.getText()+ ":" + minuteField.getText(); timeField.setText(tim); } } );
NuTextTest2.java
hourField = new TextField("12", 3); p.add(hourField); minuteField = new TextField("00", 3); p.add(minuteField); timeField = new TextField("", 12); p.add(timeField);
setSize (400,100); show (); }//end of NuTextTest2 (constructor)
private TextField hourField; private TextField minuteField; private TextField timeField; private Button TickButton; private Button SetTime;
NuTextTest2.java
public static void main(String[] args) {
NuTextTest2 app = new NuTextTest2(); app.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } } ); }//end of main()}//end of program
Summary
• Java is:– Platform independent– Object-oriented– Dynamic– Flexible – used in many different domains– Command line or graphical