Download presentation
Presentation is loading. Please wait.
1
Advanced Programming in Java
Sharif University of Technology Fall 2015
2
Agenda Graphical User Interface (GUI) GUI Components Event Handlers
Inner Classes Anonymous Inner Classes Sharif University of Technology
3
Graphical User Interface (GUI)
GUI presents a mechanism for interacting with application. a user-friendly mechanism What are other mechanisms? Console Applications File Web Applications … GUI is pronounced “GOO-ee” Sharif University of Technology
4
GUI Components GUIs are built from GUI components GUI component:
sometimes called controls or widgets widget: short for window gadgets GUI component: an object with which the user interacts via the mouse or the keyboard Example? Button, Textbox, Menu, … Sharif University of Technology
5
Sharif University of Technology
6
Swing An AWT component’s behavior may be different between platforms.
AWT was the early way for GUI in java Abstract Window Toolkit Java.awt package An AWT component’s behavior may be different between platforms. Swing is a newer approach In this presentation we review Swing GUI components javax.swing package Sharif University of Technology
7
JOptionPane JOptionPane.showInputDialog JOptionPane.showMessageDialog
JOptionPane class has simple static methods for input and output Using Dialog boxes JOptionPane.showInputDialog Returns a String JOptionPane.showMessageDialog Shows a dialog box Sharif University of Technology
8
JOptionPane Sample String name = JOptionPane.showInputDialog("Enter your name:"); JOptionPane.showMessageDialog(null, "Salam "+name +"!"); Sharif University of Technology
9
Modal Dialog JOptionPane dialogs are called modal dialogs
While the dialog is on the screen… the user cannot interact with the rest of the application Sharif University of Technology
10
JFrame We create a window containing Swing GUI components
This window object is usually instance of JFrame or a subclass of JFrame JFrame provides the basic attributes and behaviors of a window a title bar at the top minimize and maximize buttons close button Sharif University of Technology
11
JFrame Example JFrame frame = new JFrame(); frame.setSize(300, 150); frame.setVisible(true); frame.setLayout(new FlowLayout()); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); Sharif University of Technology
12
Swing GUI Components JButton JLabel JTextField JComboBox JRadioButton
JMenu … Sharif University of Technology
13
JLabel and JButton JLabel label = new JLabel("Salam");
label.setToolTipText("Tooltip1"); frame.add(label); JButton button = new JButton("Click!"); button.setToolTipText("salam :-)"); frame.add(button); Sharif University of Technology
14
Other GUI Components JTextField textbox = new JTextField(10); frame.add(textbox); JComboBox combo = new JComboBox( new String[]{"Red", "Blue", "Green"}); frame.add(combo); Sharif University of Technology
15
Layout Management You must attach each GUI component to a container
such as a JFrame. You typically must decide where to position each GUI component known as specifying the layout Java provides several layout managers They help you position components Sharif University of Technology
16
FlowLayout In FlowLayout layout manager:
components are placed on a container from left to right in the order in which they’re added When no more components can fit on the current line continue on the next line Other layouts: GridLayout, BoxLayout, … Sharif University of Technology
17
Layouts Three ways to arrange components in a GUI Layout managers
Simple and Fast Absolute positioning provides the greatest level of control GUI’s appearance. Visual programming in an IDE They generate codes They may use layout managers Sharif University of Technology
18
Absolute Positioning Set Container’s layout to null
Specify the absolute position of each GUI component with respect to the upper-left corner of the Container by using Component methods setSize and setLocation or setBounds absolute positioning can be tedious unless you have a support by an IDE Sharif University of Technology
19
IDE Support Many IDEs provide GUI design tools
You can specify a component’s exact size and location in a visual manner by using the mouse simplifies creating GUIs each IDE generates this code differently You should know the underlying codes Eclipse Plugin Sharif University of Technology
20
Extending JFrame You can also extend JFrame to create new frames…
Sharif University of Technology
21
public class MyFrame extends JFrame{ JLabel label; JButton button; JTextField textbox; JComboBox combo; public MyFrame(){ super("Frame Title"); label = new JLabel("Salam"); label.setToolTipText("Label Tooltip"); add(label); button = new JButton("Click!"); button.setToolTipText("salam :-)"); add(button); textbox = new JTextField(10); add(textbox); combo = new JComboBox( new String[]{"Red", "Blue", "Green"}); add(combo); } Sharif University of Technology
22
Event Handling GUIs are event driven User interaction => events
An Event drives the program to perform a task Some events: clicking a button typing in a text field selecting an item from a menu closing a window moving the mouse Sharif University of Technology
23
Event Handling (2) event handler :
The code that performs a task in response to an event event handling : The overall process of responding to events Sharif University of Technology
24
Sharif University of Technology
25
Sharif University of Technology
26
Event Handlers button = new JButton("Click!"); ActionListener al = new ClickListener(); button.addActionListener(al); public class ClickListener implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, “Salam!!!”); } Sharif University of Technology
27
Better Event Handlers I want to show a message-box
According to the value of a component For example a text-field or a combo-box How can I do that? Inner Classes Sharif University of Technology
28
public class MyFrame extends JFrame{ public class ClickListener implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, textbox.getText()); } JButton button; JTextField textbox; public MyFrame(){ button = new JButton("Click!"); button.addActionListener(new ClickListener()); add(button); textbox = new JTextField(10); add(textbox); Sharif University of Technology
29
Inner Classes
30
Class Types class FriendlyClass{ } public class OuterClass { private int value; public class Inner{ public void f(){ … Friendly Class Public class Inner Class Sharif University of Technology
31
Inner Classes Declared in another class
Instantiated using a reference object of outer class Has access to this object The inner class can be static No reference object of outer class is needed No access to outer class is provided Sharif University of Technology
32
OuterClass.this is implicitly saved in inner object
public class OuterClass { private int value = 2; class Inner{ public void innerMethod(){ OuterClass.this.value = 5; } public void outerMethod(){ Inner inner = new Inner(); inner.innerMethod(); public static void main(String[] args) { OuterClass outer = new OuterClass(); System.out.println(outer.value); outer.outerMethod(); OuterClass.this is implicitly saved in inner object Sharif University of Technology
33
Why we need outer reference?
public class OuterClass { private int value = 2; class Inner{ public void f(){ OuterClass.this.value = 5; } public static void main(String[] args) { OuterClass outer = new OuterClass(); OuterClass.Inner inner = outer.new Inner(); System.out.println(outer.value); inner.f(); Why we need outer reference? Sharif University of Technology
34
OuterClass.Inner in = new OuterClass.Inner();
class OuterClass { static class Inner{ public void f(){ System.out.println("f() invoked"); } public class MainClass { public static void main(String[] args) { OuterClass.Inner in = new OuterClass.Inner(); in.f(); Sharif University of Technology
35
Inner Class Specifiers
static final Access Specifiers public private Friendly (no specifier) protected Sharif University of Technology
36
Anonymous Inner Class An inner class With no name Created once
Used once No access to this class from any other place Once created and used Sharif University of Technology
37
Inner inner = new Inner() { public void innerMethod() {
interface Inner{ void innerMethod();} public class OuterClass { private int value = 2; public void outerMethod(){ Inner inner = new Inner() { public void innerMethod() { OuterClass.this.value = 5; } }; inner.innerMethod(); public static void main(String[] args) { OuterClass outer = new OuterClass(); System.out.println(outer.value); outer.outerMethod(); Sharif University of Technology
38
Anonymous Inner Class Usually implements an interface
Or extends another class And Overrides some special method Main Application : Event Handlers Sharif University of Technology
39
public class MyFrame extends JFrame{ JButton button; JTextField textbox; public MyFrame(){ button = new JButton("Click!"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, textbox.getText()); } }); add(button); textbox = new JTextField(10); add(textbox); Sharif University of Technology
40
Further Reading javaw Java Web Applications SWT Java Look and Feels
Web Interface SWT Java Look and Feels Sharif University of Technology
41
Sharif University of Technology
42
Sharif University of Technology
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.