230 likes | 416 Views
Java Applets: GUI Components, Events, Etc. Ralph Westfall June, 2010. What Is an Applet?. a special Java class that doesn't run in a DOS window runs in a web browser on client, in a window, on a HTML page
E N D
Java Applets: GUI Components, Events, Etc. Ralph Westfall June, 2010
What Is an Applet? • a special Java class that doesn't run in a DOS window • runs in a web browser on client, in a window, on a HTML page • Java has security features to keep the applet from acting like a virus on the client machine
Creating an Applet • need import statements to bring in classes, etc. that Applet will use • import java.applet.*; • import java.awt.*; • put extends Applet after class name • has Applet functionality, plus what you add • has a public void init() method • has no main() method // code below
GUI Components • components are objects (or like objects) • GUI means graphic user interface • graphic is the opposite of text • you see something other than just plain text • interface is what the user works with when using a computer program
GUI Components for Applets • some "heavyweight" (platform dependent) components in Java • Label: writes text on the Applet • Button: push button to trigger action • TextField: one line input box • TextArea: multi-line input box • others: scrollbar, etc. (similar to many components in Windows programs)
"Heavyweight" vs. Swing • earlier Java versions had "heavyweight" platform dependent AWT (abstract windowing toolkit) components • different on different operating systems • "lightweight" Swing components are platform independent in many ways • e.g., look the same on PC or Apple
JOptionPane • Java Swing class (lightweight) "bean" that includes components including: • Label, • TextField • Buttons • Java beans: classes with extra features • makes them easier to use with other classes, languages, and on different platforms
Additional Components • the Java Swing class has additional GUI components (that are NOT platform dependent) • JCheckBox: yes or no choices • JRadioButton: can only select 1 in a group • JComboBox: drop down list that user can type one or more characters into
Using GUI Components • need to declare the object Label aLabel = new Label("Hello"); Button aButton = new Button("Click"); • need to add objects to the Applet, usually in its init() method public void init() { add(aLabel); }
GUI Component Methods • can use methods to set or change properties on components • font on labels (type, style, size) • text on a button e.g., OK • input box size(s) • default content inside an input box • make content of input box editable or not
GUI Component Methods - 2 • can use methods to manipulate components • set focus (cursor position) onto a TextField • get contents (user input) from a TextField • e.g., getting String from JOptionPane
Event-Driven Programming • event = something that happens • mouse click, mouse over, mouse out, button push, key stroke, time of day, etc. • event-driven program flow is (partially) controlled by external events • rather than just by internal logic
"Listener" • object that waits for an event and then triggers a method that responds to it • associated with another object e.g., button or text component
Using a Listener • need another import statement at top import java.awt.event.*; • the class also needs to "implement" an ActionListener public class Greet extends Applet implements ActionListener
Using a Listener - 2 • attach a listener method to an object public void init() { add(aButton); // declared above init aButton.addActionListener(this); }
Using a Listener - 3 • add an actionPerformed method public void actionPerformed(ActionEvent thisEvent) { aLabel.setText("Hi"); } /*will get fatal error if have an ActionListener without actionPerformed method in class*/
Adding Interactive Output • can add statements to actionPerformed method • e.g., labels with text from user inputs • may need to force Applet to redraw itself by adding following methods: • invalidate(); // marks Applet as out-of-date • validate(); // redraws out-of-date Applet
Other Interactivity • can also add methods to actionPerformed method to remove GUI components remove(aLabel);
Controlling Position • when add components without a layout manager, Java chooses where to put each item • left to right until row is filled, and then starts a new row below previous • as space permits, centered in row • can subsequently move components to locations identified by coordinates
Window Coordinate System • 1st number is x (horizontal) position • 2nd number is y (vertical) position • upper left corner is 0, 0 • 100, 0 is top of window, 100 pixels to right of upper left corner • 0, 100 is left side of window, 100 pixels down from upper left corner • 100, 100 is 100 pixels over, 100 down
Placing Components on Applet • use setLocation method with a component myLabel.setLocation(50, 150); // where?
Disable and Enable • disable makes it impossible to click a button, checkbox, etc. e.g. • disable Print button until inputs are entered and calculations are completed • enable makes the item functional again • enable Print button when data is OK
Enabling Components clickButton.setEnabled(false); • button previously declared by user will not respond to clicks clickButton.setEnabled(true); • default condition, don't have to set to true if didn't previously set it to false