CH14revised - Academic Web Pages

Download Report

Transcript CH14revised - Academic Web Pages

Windows, Networking and other
Tidbits
Chapter Fourteen
1
Topics:

Windows, menus and dialog boxes
– allow real pop up windows now from Java
applets
Networking - load HTML from
browser, retrieve files from web sites
work with generic sockets
 Extra stuff

2
Windows, menus and dialog
boxes
Frames AWT Window class provides
for windows that are independent (own
titles, resize handels, menu bars)
 Subclasses:
 Frame - fully functioning window with
menubar
 Dialog - more limited

3
To create a frame
new Frame( ) // = no title
 new Frame(String) has given title
 Frames are containers “like panels”
 default layout is BorderLayout

– win = new Frame(“My Way Cool
Window”);
– win.setLayout(new Borderlayout(10,20));
– win.add(“North”, new Button(“Start”));
– win.add(“Center”, new Button(“Move”));
4
Sizes moves location show hide
resize( ) to set size
 move( ) to set location
 location( ) can tell the applet window is
on screen
 win.resize(100, 200);
 Dimension d = location( );
 win.move(d.width + 50, d.height + 50);

5
When you create a window it is
invisable
 show( ); // to make it appear
 hide( ); // to make it disappear

6
A popup window 14-1
public class GUI extends
java.applet.Applet { Frame window;
 public void init( ) {

– add(new Button(“Open Window”));
– add(new Button(“Close Window”));
– window = new MyFrame(“A Popup
Window”);
– window.resize(150, 150); window.show( );
7
public boolean action(Event evt, Object
arg) { if (evt.target instanceof Button) {
 String label = (String)arg;
 if (label.equals(“Open Window”)) {
 if (!window.isShowing( ) )

– window.show( ); }
else if (label = = “Close Window”) {
 if (window.isShowing( ) )

– window.hide( ); }

return true; }
8
List 14.1 contd.
else return false; } }
 class MyFrame extends Frame {
 Label l // lowercase L is variable
 MyFarame(String title) {
 Super(title);
 setLayout(new GridLayout(1 ,1));
//ones
 l = new Label(“This is a Window”,
Label.center); add(l); } // l is lower L

9
Programming hint: Do Not use
lowercase letter L’s they look too
much like the digit One....
I keep telling publishers that and
have done it myself - choose
something else. Old time
keypunch operators got sheets in
the writers hand Z vs. 2, l vs. 1
This is not a new concept...
10
Menus and Menubars

To create:
– MenuBar mb = new MenuBar( );

Set as default:
– window.setMenuBar(mb);
Add individual menus (File, Edit etc.)
 menu m = new menu(“file”);
 mb.add(m); // Some systems NOT All
 // would allow mb.setHelpMenu(m);

11
Menu Items

Instances of the class MenuItem
– Menu m = new Menu(“Tools”);
m.add(new MenuItem(“Info”));
Instances of the class
CheckBoxMenuItem
 Other menus with their own items
 Seperators = lines that divide groups

12
Submenus
To create:
 Menu sb = new Menu (“sizes”);
 m.add(sb) // sub to m in previous
slide
 sb.add(new MenuItem(“Small”));
 medium and large etc. can also be
added

13
CheckboxMenuItem
A menu item with a checkbox
 CheckboxMenuItem coords = new
CheckBoxMenuItem(“Show
Coordinates”);
 m.add(coords);
 Again m from previous menu


Any menu can be enable( ) disable( )
14
Menu Actions
public boolean action(Event evt, Object
arg) { if (evt.target instanceof
MenuItem) {
 String label = (String)arg;
 if(label.equals(“Show Coordinates”))
toggleCoords( );
 else if (label.equals(“Fill”))
fillcurrentArea( ); return true; } else
return false; }

15
Add a menu: Window from class
MyFrame
 MyFrame(String title) {

–
–
–
–
–
–
–
–
Super(title);
MenuBar mb = new MenuBar( );
Menu m = new Menu(“Colors”);
m.add(new MenuItem(“Red”));
m.add(new MenuItem(“Blue”));
m.add(new MenuItem(“Green”));
m.add(new MenuItem(“-”));
m.add(new CheckboxMenuItem(“Reverse
Text”)); mb.add(m);
mb.setHelpMenu(m);
16
To run the last slide you need an action(
) method:
 public boolean action(Event evt, Object
arg) { String label = (String)arg;
 if (evt.target instanceof MenuItem) {
 if (label.equals (“Red”))
setBackground(Color.red);
 else if (label.equals(“Blue”))
setBackgroundColor.blue);
 else if (label.equals(“Green”))
setBackgroundColor.green); return
true; }

17
if (evt.target instanceof
CheckboxMenuItem) {
 if (getForeground( ) = = Color.balck)
 setForeground(Color.white);
 else setForeground(Color.black);
 return true; }
 return false; }

18
Dialog Boxes
transient windows - popup with
warnings ask for info. etc.
 Two types in AWT:

– Dialog class = generic
– FileDialog = platform specific
(save/open)files
To create:
 Dialog(Frame, boolean) initial invisable

– true = modal
false not modal
19
Dialog(Frame, String, boolean) same as
last slide BUT has titlebar and title
 can be show( ) hide( ) just like Frames
 To add:
 m.add(new MenuItem(“Set Text...”));
 dl = new Dialog(this, “Enter Text”,
true);
 dl.setLAyout(new GridLayout(2, 1, 30,
30));
 tf = new TextField(l.getText( ), 20);
 dl.add(tf); dl.add(new Button(“OK”));

20
File Dialogs - Can’t access or
Severe restrictions on local
system Really just for stand alone
To create: FileDialog (Frame, String)
 FileDialog(Frame, String, int) //
(load/save)

– FileDialog.SAVE.
FileDialog.LOAD
OR
FIleDialog fd = new FileDialog(this,
“FileDialog”);
 fd.show( );

21
Window Events
WINDOW-DESTROY
 WINDOW-EXPOSE // brought
forward
 WINDOW-ICONIFY
 WINDOW-DEICONIFY
 WINDOW-MOVED


Can test for all of these in the Event
class
22
AWT in Stand Alone
Applications
Can use all the applet stuff:
 Can use Graphics etc.

23
Networking in Java
ShowDocument( ) // Load - link to
other web page
 openStream( ) open connect to URL
 Socket classes: Socket and
ServerSocket open standard socket
connections (read/write to them)

24
Create Links inside Applets
URL class To create a new URL
 URL(String, String, int, String)

– http ftp gopher file
– host name (www.lne.com, ftp.netcom.com)
– a port number (80 for http)
URL(String, String, String) Same as
above minus port number
 URL(String) String should include
“All”

25
Srting url =
“http//www.yahoo.com)/”);
try ( theURL = new URL(url); {
 catch (MAlformedURLException e) {

– System.out.println(“Bad URL: “ +
theURL);
–}
After you have the URL Link it:
 getAppletContext(
).showDocument(theURL):

26
Bookmark buttons
import java.awt.*;
 import java.net.URL;
 import
java.net.MalformedURLExceptions;
 public class ButtonLink extends
java.applet.Applet {
 Bookmark bmlist[] = new Bookmark[3];

27
public void init( ) {
 bmlist[0] = new Bookmark(“Laura’s
Home Page”,
“http://www.lne.com/lemay/”);
 bmlist[1] = new Bookmark(“Yahoo”,
“http://www.yahoo.com”);
 bmlist[2] = new Bookmark(“Java Home
Page”, “http://www.java.sun.com”);
 setLayout(new
Bookmark(“GridLayout(bmlist.length,1,
10,10)); for(int i=0; i< bmlist.length;
i++);

28
public boolean action(Event evt, Object
arg) {
 if(evt.target instanceof Button) {
 linkto((String) arg);
 return true }
 else return false; }
 Void LinkTo(String name) {
 URL theURL = null; for (int i=0; i <
bmlist.length; i++) {
 if (name.equals(bmlist[i].name))
theURL = bmlist[i].url; }

29
if (theURL != null) getAppletContext(
).showDocument(theURL); } }
 class Bookmark { String name; URL
url;
 Bookmark(String name, String theURL)
{
 this.name = name;
 try { this URL = new URL(theURL); }
 catch (MalformedURLException e) {
 System.out.println(“Bad URL: “ +
theURL); } } }

30
Opening Web Connections
openStream( )
To open a net connection - given URL
 try { inputStream in =
theURL.openStream( );
 DataInputStream data new
DataInputStream((new
BufferedInputStream(in); String line;
 while (( line = data.readLine( )) != null)
{
 System.out.println(line); } }

31
catch (IOException e) {
 System.out.Pintln(“IO Error: “ +
e.getMessage( )); }

32
The Get (Poe’s) Raven class
Page 293 - 294 complete text
 Note the following:
 All the imports - more than ever before
(7)
 public class GetRaven extends
java.applet.Applet
 implements Runnable {
 URL theURL; Thread runner;
 TextArea ta = new Text(“Getting text
...”,30,70);

33
public void init( ) {
 String url =
“http:/www.lne.com/Web/Java/raven
.txt”;
 try { this.theURL = new URL(url); }
 catch (MalformedURLException e) {

– System.out.println(“Bad URL: “ +
theURL);
– } add(ta); }

NOT going to review insets( )
– start( )
stop( )
34
public void run( ) { InputStream conn;
 data = new DataInputStream(new
BufferedInputStream(conn));
 while((line = data.readLine( )) != null) {

– buf.append(line + “\n”); }
– ta.setText(buf.toString( )); }
– catch (IOException e) {
System.out.println(“IO Error:” +
e.getMessage( )); } } }
35
URLconnection Class
openStream( ) simple for
 URLconnection class.URLconnection

– A way to retrieve files
36
Sockets

Java provides socket and ServerSocket
They provide for networking
applications beyond what URL and
URLconnection classes offer
 Socket connection = new
Socket(hostname, portnum);

37
DataInputStream in = new
DataINputStream( new
BufferedINputStream(connection.getIn
putStream( )));
 DataoutputStream out = new
DataOutputStream( new
BufferedOutputStream(connection.getO
utputStream( )));
 connection.close( ) // when done &
hide it
 ServerSocket sconnection = new
ServerSocket(8888);
sconnection.accept( );

38
Other Applet Hints
showStatus( ) // use print error etc.
msgs:
 getAppletContext(
).showStatus(“Change the color); //
access browser features
 Applet Information:

– public String getAppletInfo( ) {
– return “GetRaven copyright 1995 Laura
Lemay;’ }
39
Communication Between Applets
for (Enumeration e = getAppletContext(
).getApplets( );
 e.hasMoreElements( );) {
 Applet current =
(Applet)(e.nextElement( ));
 current.sendMessage }

– //getApplets( ) returns Enumeration
Object
– A list of Applets on the page
40
to call specific applet:
 <P> This applet sends information:
 <APPLET CODE=“MyApplet.class”
WIDTH=100 HEIGHT=150
 NAME = “sender””> </APPLET>
 <P>This applet receives information
from the sender:
 <APPLET CODE=“MyApplet.class”
WIDTH=100 HEIGHT=150
 NMAE=“receiver”><?APPLET>

41
Finally:
//get ahold of the receiver applet
 Applet receiver = getAppletContext(
).getApplet(“receiver”);
 //tell it to update itself.

– RECEIVER.UPDATE(TEXT, VALUE);
42