Course Outcomes of Advanced Java Programming AJP 17625

  • Slides: 31
Download presentation
Course Outcomes of Advanced Java Programming AJP (17625, C 603) C 603. 1 Design

Course Outcomes of Advanced Java Programming AJP (17625, C 603) C 603. 1 Design GUI using AWT and Swing. C 603. 2 Develop program using event handling. C 603. 3 Use network concepts (client/server, socket) in the program. C 603. 4 Develop program using JDBC connectivity to access data from database and execute different queries to get required result. C 603. 5 Develop web based program using servlet and JSP Visit for more Learning Resources

Java GUI Libraries Swing Programming

Java GUI Libraries Swing Programming

Swing Components • Swing is a collection of libraries that contains primitive widgets or

Swing Components • Swing is a collection of libraries that contains primitive widgets or controls used for designing Graphical User Interfaces (GUIs). • Commonly used classes in javax. swing package: – JButton, JText. Box, JText. Area, JPanel, JFrame, JMenu, JSlider, JLabel, JIcon, … – There are many, many such classes to do anything imaginable with GUIs – Here we only study the basic architecture and do simple examples

Swing components, cont. • Each component is a Java class with a fairly extensive

Swing components, cont. • Each component is a Java class with a fairly extensive inheritency hierarchy: Object Component Container JComponent Window JPanel Frame JFrame

Using Swing Components • Very simple, just create object from appropriate class – examples:

Using Swing Components • Very simple, just create object from appropriate class – examples: – JButton but = new JButton(); – JText. Field text = new JText. Field(); – JText. Area text = new JText. Area(); – JLabel lab = new JLabel(); • Many more classes. Don’t need to know every one to get started. • See ch. 9 Hortsmann

Adding components • Once a component is created, it can be added to a

Adding components • Once a component is created, it can be added to a container by calling the container’s add method: Container cp = get. Content. Pane(); This is required cp. add(new JButton(“cancel”)); cp. add(new JButton(“go”)); How these are laid out is determined by the layout manager.

Laying out components • Not so difficult but takes a little practice • Do

Laying out components • Not so difficult but takes a little practice • Do not use absolute positioning – not very portable, does not resize well, etc.

Laying out components • Use layout managers – basically tells form how to align

Laying out components • Use layout managers – basically tells form how to align components when they’re added. • Each Container has a layout manager associated with it. • A JPanel is a Container – to have different layout managers associated with different parts of a form, tile with JPanels and set the desired layout manager for each JPanel, then add components directly to panels.

Layout Managers • Java comes with 7 or 8. Most common and easiest to

Layout Managers • Java comes with 7 or 8. Most common and easiest to use are – Flow. Layout – Border. Layout – Grid. Layout • Using just these three it is possible to attain fairly precise layout for most simple applications.

Setting layout managers • Very easy to associate a layout manager with a component.

Setting layout managers • Very easy to associate a layout manager with a component. Simply call the set. Layout method on the Container: JPanel p 1 = new JPanel(); p 1. set. Layout(new Flow. Layout(Flow. Layout. LEFT)); JPanel p 2 = new JPanel(); p 2. set. Layout(new Border. Layout()); As Components are added to the container, the layout manager determines their size and positioning.

Event handling

Event handling

What are events? • All components can listen for one or more events. •

What are events? • All components can listen for one or more events. • Typical examples are: – – – Mouse movements Mouse clicks Hitting any key Hitting return key etc. • Telling the GUI what to do when a particular event occurs is the role of the event handler.

Action. Event • In Java, most components have a special event called an Action.

Action. Event • In Java, most components have a special event called an Action. Event. • This is loosely speaking the most common or canonical event for that component. • A good example is a click for a button. • To have any component listen for Action. Events, you must register the component with an Action. Listener. e. g. – button. add. Action. Listener(new My. AL());

Delegation, cont. • This is referred to as the Delegation Model. • When you

Delegation, cont. • This is referred to as the Delegation Model. • When you register an Action. Listener with a component, you must pass it the class which will handle the event – that is, do the work when the event is triggered. • For an Action. Event, this class must implement the Action. Listener interface. • This is simple a way of guaranteeing that the action. Performed method is defined.

action. Performed • The action. Performed method has the following signature: void action. Performed(Action.

action. Performed • The action. Performed method has the following signature: void action. Performed(Action. Event) • The object of type Action. Event passed to the event handler is used to query information about the event. • Some common methods are: – get. Source() • object reference to component generating event – get. Action. Command() • some text associated with event (text on button, etc).

action. Performed, cont. • These methods are particularly useful when using one eventhandler for

action. Performed, cont. • These methods are particularly useful when using one eventhandler for multiple components.

Simplest GUI import javax. swing. JFrame; class Simple. GUI extends JFrame{ Simple. GUI(){ set.

Simplest GUI import javax. swing. JFrame; class Simple. GUI extends JFrame{ Simple. GUI(){ set. Size(400, 400); //set frames size in pixels set. Default. Close. Operation(EXIT_ON_CLOSE); show(); } public static void main(String[] args){ Simple. GUI gui = new Simple. GUI(); System. out. println(“main thread coninues”); } }

Another Simple GUI import javax. swing. *; class Simple. GUI extends JFrame{ Simple. GUI(){

Another Simple GUI import javax. swing. *; class Simple. GUI extends JFrame{ Simple. GUI(){ set. Size(400, 400); //set frames size in pixels set. Default. Close. Operation(EXIT_ON_CLOSE); JButton but 1 = new JButton(“Click me”); Container cp = get. Content. Pane(); //must do this cp. add(but 1); show(); } public static void main(String[] args){ Simple. GUI gui = new Simple. GUI(); System. out. println(“main thread coninues”); }}

Add Layout Manager import javax. swing. *; import java. awt. *; class Simple. GUI

Add Layout Manager import javax. swing. *; import java. awt. *; class Simple. GUI extends JFrame{ Simple. GUI(){ set. Size(400, 400); //set frames size in pixels set. Default. Close. Operation(EXIT_ON_CLOSE); JButton but 1 = new JButton(“Click me”); Container cp = get. Content. Pane(); //must do this cp. set. Layout(new Flow. Layout(Flow. Layout. CENTER); cp. add(but 1); show(); } public static void main(String[] args){ Simple. GUI gui = new Simple. GUI(); System. out. println(“main thread coninues”); }}

Add call to event handler import javax. swing. *; import java. awt. *; class

Add call to event handler import javax. swing. *; import java. awt. *; class Simple. GUI extends JFrame{ Simple. GUI(){ set. Size(400, 400); //set frames size in pixels set. Default. Close. Operation(EXIT_ON_CLOSE); JButton but 1 = new JButton(“Click me”); Container cp = get. Content. Pane(); //must do this cp. set. Layout(new Flow. Layout(Flow. Layout. CENTER); but 1. add. Action. Listener(new My. Action. Listener()); cp. add(but 1); show(); } public static void main(String[] args){ Simple. GUI gui = new Simple. GUI(); System. out. println(“main thread coninues”); }}

Event Handler Code class My. Action. Listener implements Action. Listener{ public void action. Performed(Action.

Event Handler Code class My. Action. Listener implements Action. Listener{ public void action. Performed(Action. Event ae){ JOption. Pane. show. Message. Dialog(“I got clicked”, null); } }

Add second button/event class Simple. GUI extends JFrame{ Simple. GUI(){ /*. . */ JButton

Add second button/event class Simple. GUI extends JFrame{ Simple. GUI(){ /*. . */ JButton but 1 = new JButton(“Click me”); JButton but 2 = new JButton(“exit”); My. Action. Listener al = new My. Action. Listener(); but 1. add. Action. Listener(al); but 2. add. Action. Listener(al); cp. add(but 1); cp. add(but 2); show(); } }

How to distinguish events –Less good way class My. Action. Listener implents Action. Listener{

How to distinguish events –Less good way class My. Action. Listener implents Action. Listener{ public void action. Performed(Action. Event ae){ if (ae. get. Action. Command(). equals(“Exit”){ System. exit(1); } else if (ae. get. Action. Command(). equals(“Click me”){ JOption. Pane. show. Message. Dialog(null, “I’m clicked”); } }

Good way class My. Action. Listener implents Action. Listener{ public void action. Performed(Action. Event

Good way class My. Action. Listener implents Action. Listener{ public void action. Performed(Action. Event ae){ if (ae. get. Source() == but 2){ System. exit(1); } else if (ae. get. Source() == but 1){ JOption. Pane. show. Message. Dialog(null, “I’m clicked”) } } Question: How are but 1, but 2 brought into scope to do this? Question: Why is this better?

Putting it all together • See Login. Form. java example in class notes For

Putting it all together • See Login. Form. java example in class notes For more detail contact us