Intro to Java

slimwhimperSoftware and s/w Development

Nov 3, 2013 (3 years and 9 months ago)

66 views

Intro to Java

Java Applications

Swing 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.java

class 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 MyHelloApp

Welcome to CS423

The 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.txt

Enter Destination File Name Here:
My_list.txt

Data 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 integers

import
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);


}


HelloWorldWindow


class 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