1 / 42

Advanced Programming in Java

Advanced Programming in Java. Sadegh Aliakbary Sharif University of Technology Fall 2011. Agenda. Graphical User Interface (GUI) GUI Components Event Handlers Inner Classes Anonymous Inner Classes. Graphical User Interface (GUI).

Télécharger la présentation

Advanced Programming in Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Advanced Programming in Java SadeghAliakbary Sharif University of Technology Fall 2011

  2. Agenda • Graphical User Interface (GUI) • GUI Components • Event Handlers • Inner Classes • Anonymous Inner Classes Sharif University of Technology

  3. Graphical User Interface (GUI) • GUIpresents 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 • 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 • 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.swingpackage Sharif University of Technology

  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 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 JFrameor 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 = newJFrame(); frame.setSize(300, 150); frame.setVisible(true); frame.setLayout(newFlowLayout()); 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 = newJButton("Click!"); • button.setToolTipText("salam :-)"); • frame.add(button); Sharif University of Technology

  14. Other GUI Components JTextField textbox = newJTextField(10); frame.add(textbox); JComboBox combo = newJComboBox( newString[]{"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 whereto 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 • setSizeand 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 = newJButton("Click!"); ActionListener al = newClickListener(); button.addActionListener(al); publicclassClickListener implementsActionListener { publicvoidactionPerformed(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()); } } JButtonbutton; JTextFieldtextbox; 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 classFriendlyClass{ } publicclassOuterClass { privateintvalue; publicclass Inner{ publicvoid 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. publicclassOuterClass { privateintvalue = 2; class Inner{ publicvoidinnerMethod(){ OuterClass.this.value = 5; } } publicvoidouterMethod(){ Inner inner = new Inner(); inner.innerMethod(); } publicstaticvoid main(String[] args) { OuterClass outer = newOuterClass(); System.out.println(outer.value); outer.outerMethod(); System.out.println(outer.value); } } OuterClass.this is implicitly saved in inner object Sharif University of Technology

  33. publicclassOuterClass { privateintvalue = 2; class Inner{ publicvoid f(){ OuterClass.this.value = 5; } } publicstaticvoid main(String[] args) { OuterClass outer = newOuterClass(); OuterClass.Inner inner = outer.new Inner(); System.out.println(outer.value); inner.f(); System.out.println(outer.value); } } Why we need outer reference? Sharif University of Technology

  34. classOuterClass { staticclass Inner{ publicvoid f(){ System.out.println("f() invoked"); } } } publicclassMainClass { publicstaticvoid main(String[] args) { OuterClass.Inner in = newOuterClass.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. interface Inner{ voidinnerMethod();} publicclassOuterClass { privateintvalue = 2; publicvoidouterMethod(){ Inner inner = new Inner() { publicvoidinnerMethod() { OuterClass.this.value = 5; } }; inner.innerMethod(); } publicstaticvoid main(String[] args) { OuterClass outer = newOuterClass(); System.out.println(outer.value); outer.outerMethod(); System.out.println(outer.value); } } 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{ JButtonbutton; JTextFieldtextbox; 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 • Web Interface • SWT • Java Look and Feels Sharif University of Technology

  41. Sharif University of Technology

  42. Sharif University of Technology

More Related