Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sadegh Aliakbary Sharif University of Technology Fall 2011.

Similar presentations


Presentation on theme: "Sadegh Aliakbary Sharif University of Technology Fall 2011."— Presentation transcript:

1 Sadegh Aliakbary Sharif University of Technology Fall 2011

2 Agenda Graphical User Interface (GUI) GUI Components Event Handlers Inner Classes Anonymous Inner Classes Fall 2011Sharif University of Technology2

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” Fall 2011Sharif University of Technology3

4 GUI Components GUIs are built from GUI components 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, … Fall 2011Sharif University of Technology4

5 Fall 2011Sharif University of Technology5

6 Swing 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 Fall 2011Sharif University of Technology6

7 JOptionPane JOptionPane class has simple static methods for input and output Using Dialog boxes JOptionPane.showInputDialog Returns a String JOptionPane.showMessageDialog Shows a dialog box Fall 2011Sharif University of Technology7

8 JOptionPane Sample String name = JOptionPane.showInputDialog("Enter your name:"); JOptionPane.showMessageDialog(null, "Salam "+name +"!"); Fall 2011Sharif University of Technology8

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 Fall 2011Sharif University of Technology9

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 Fall 2011Sharif University of Technology10

11 JFrame Example JFrame frame = new JFrame(); frame.setSize(300, 150); frame.setVisible(true); frame.setLayout(new FlowLayout()); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); Fall 2011Sharif University of Technology11

12 Swing GUI Components JButton JLabel JTextField JComboBox JRadioButton JMenu … Fall 2011Sharif University of Technology12

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); Fall 2011Sharif University of Technology13

14 Other GUI Components JTextField textbox = new JTextField(10); frame.add(textbox); JComboBox combo = new JComboBox( new String[]{"Red", "Blue", "Green"}); frame.add(combo); Fall 2011Sharif University of Technology14

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 Fall 2011Sharif University of Technology15

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, … Fall 2011Sharif University of Technology16

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 Fall 2011Sharif University of Technology17

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 Fall 2011Sharif University of Technology18

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 Fall 2011Sharif University of Technology19

20 Extending JFrame You can also extend JFrame to create new frames… Fall 2011Sharif University of Technology20

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); } Fall 2011Sharif University of Technology21

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 Fall 2011Sharif University of Technology22

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 Fall 2011Sharif University of Technology23

24 Fall 2011Sharif University of Technology24

25 Fall 2011Sharif University of Technology25

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!!!”); } Fall 2011Sharif University of Technology26

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 Fall 2011Sharif University of Technology27

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); } Fall 2011Sharif University of Technology28

29

30 Class Types class FriendlyClass{ } public class OuterClass { private int value; public class Inner{ public void f(){ … } Fall 2011Sharif University of Technology30 Friendly Class Public class Inner Class

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 Fall 2011Sharif University of Technology31

32 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(); System.out.println(outer.value); } Fall 2011Sharif University of Technology32 OuterClass.this is implicitly saved in inner object

33 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(); System.out.println(outer.value); } Fall 2011Sharif University of Technology33 Why we need outer reference?

34 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(); } Fall 2011Sharif University of Technology34

35 Inner Class Specifiers static final Access Specifiers public private Friendly (no specifier) protected Fall 2011Sharif University of Technology35

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 Fall 2011Sharif University of Technology36

37 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(); System.out.println(outer.value); } Fall 2011Sharif University of Technology37

38 Anonymous Inner Class Usually implements an interface Or extends another class And Overrides some special method Main Application : Event Handlers Fall 2011Sharif University of Technology38

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); } Fall 2011Sharif University of Technology39

40 Further Reading javaw Java Web Applications Web Interface SWT Java Look and Feels Fall 2011Sharif University of Technology40

41 Fall 2011Sharif University of Technology41

42 Fall 2011Sharif University of Technology42


Download ppt "Sadegh Aliakbary Sharif University of Technology Fall 2011."

Similar presentations


Ads by Google