Presentation is loading. Please wait.

Presentation is loading. Please wait.

GUI. Swing Class Hierarchy Swing Components Swing Conatiners  JFrame – top-level window to store components.

Similar presentations


Presentation on theme: "GUI. Swing Class Hierarchy Swing Components Swing Conatiners  JFrame – top-level window to store components."— Presentation transcript:

1 GUI

2 Swing Class Hierarchy

3 Swing Components

4 Swing Conatiners  JFrame – top-level window to store components

5 Swing Conatiners  JPanel – container; can be embedded in JFrame

6 Layouts  FlowLayout  arranges elements in a row  elements centered by default within container  GridLayout  subdivides container into cells of identical sizes  components take up all available space of a cell  BorderLayout  subdivides container into 5 areas: N, S, E, W, Center

7 Layouts 3x3 GridLayout4x1 GridLayoutBorderLayout FlowLayout used to place the 3 panels in the Jframe.

8 Grid Layout 3x3 GridLayout4x1 GridLayoutBorderLayout GridLayout layout = new GridLayout(3, 3); panel.setLayout(layout); button1 = new JButton( "1" ); panel.add( button1 ); button2 = new JButton( "2" ); panel.add( button2 ); button3 = new JButton( "3" ); panel.add( button3 ); button4 = new JButton( "4" ); panel.add( button4 );............... Components are stretched to occupy the whole panel area.

9 Border Layout 3x3 GridLayout4x1 GridLayoutBorderLayout BorderLayout layout = new BorderLayout(); panel.setLayout(layout); button1 = new JButton( "North" ); panel.add( button1, BorderLayout.NORTH ); button2 = new JButton( "South" ); panel.add( button2, BorderLayout.SOUTH ); button3 = new JButton( "East" ); panel.add( button3, BorderLayout.EAST ); button4 = new JButton( "West" ); panel.add( button4, BorderLayout.WEST ); button5 = new JButton( "Center" ); panel.add( button5, BorderLayout.CENTER ); Center area gets most of the space. The other areas are given only as much as they need. Not all areas need to be occupied.

10 Listeners  Process events from components, containers  ActionListener (JButton, Timer, JComboBox)‏  ChangeListener (JSlider)‏  MouseListener, MouseMotionListener (JPanel, JFrame)  Listeners are interfaces; must implement ALL specified methods  ActionListener: void actionPerformed(ActionEvent e)‏  ChangeListener: void stateChanged(ChangeEvent e)‏  MouseListener: void mouseClicked(MouseEvent e) void mousePressed(MouseEvent e) void mouseReleased(MouseEvent e) void mouseEntered(MouseEvent e) void mouseExited(MouseEvent e)‏  MouseMotionListener: void mouseMoved(MouseEvent e) void mouseDragged(MouseEvent e)

11 Adapter classes  Convenience classes  server as intermediaries between the available interfaces and the user-defined (listener) classes that implement the interfaces  make it possible to implement only the methods of interest

12 Adapter classes  Convenience classes  server as intermediaries between the available interfaces and the user-defined (listener) classes that implement the interfaces  make it possible to implement only the methods of interest abstract class MouseAdapter implements MouseListener, MouseMotionListener { void mousePressed(MouseEvent e) { // empty body } void mouseReleased(MouseEvent e) { // empty body } void mouseEntered(MouseEvent e) { // empty body } void mouseExited(MouseEvent e) { // empty body } voidmouseMoved(MouseEvent e) { // empty body } voidmouseDragged(MouseEvent e) { // empty body } } MouseListener methods MouseMotionListener methods

13 Adapter classes  Convenience classes  server as intermediaries between the available interfaces and the user-defined (listener) classes that implement the interfaces  make it possible to implement only the methods of interest abstract class MouseAdapter implements MouseListener, MouseMotionListener { abstract void mousePressed(MouseEvent e); abstract void mouseReleased(MouseEvent e); abstract void mouseEntered(MouseEvent e); abstract void mouseExited(MouseEvent e); abstract voidmouseMoved(MouseEvent e); asbtract voidmouseDragged(MouseEvent e); }

14 Adapter classes  Convenience classes  server as intermediaries between the available interfaces and the user-defined (listener) classes that implement the interfaces  make it possible to implement only the methods of interest abstract class MouseAdapter implements MouseListener, MouseMotionListener { … … … … … … … … … … … … … } class LineListener extends MouseAdapter { … implement only the methods of interest … }

15 File IO

16 Text File Output  PrintWriter used for writing to file; same methods as in System.out  As if output is written to the screen with the extra steps of opening a file, closing the file, and catching exceptions try { PrintWriter output = new PrintWriter("output-file.txt"); output.println("Hello"); output.printl(42); output.println(3.1459); output.close(); } catch (Exception e) { // report error }

17 Text File Input  Scanner used for reading from file; same as in CS111  As if input is received from the keyboard with the extra steps of opening a file, closing the file, and catching exceptions  Reading stops as soon as appropriate token found; otherwise fails try { Scanner input = new Scanner(new File("input-file.txt")); String word = input.next(); int answer = input.nextInt(); double pi = input.nextDouble(); input.close(); } catch (Exception e) { // report error } Need to know the file format Whitespaces are ignored

18 Serialization  Mechanism for making exact copies of objects  For simple classes enough to declare implements Serializable  Application – saving / reading actual objects from a file

19 Saving with Serialization  ObjectOutputStream and method writeObject(obj) try { FileOutputStream file = new FileOutputStream("pets.ser"); ObjectOutputStream output = new ObjectOutputStream(file); output.write(petsList.size()); for (Pet pet : petsList) { output.writeObject(pet); } output.close(); } catch (Exception e) { System.out.println("Could not write to file. " + e); }

20  ObjectInputStream and method readObject() try { FileInputStream file = new FileInputStream("pets.ser"); ObjectInputStream output = new ObjectInputStream(file); int count = input.readInt(); for (int i = 0; i < count; i++) { Pet pet = input.readObject(); } output.close(); } catch (Exception e) { System.out.println("Could not read from file. " + e); } Reading with Serialization

21 Exceptions

22  Mechanism for handling unexpected RUN-TIME conditions (errors)‏  Force the programmer to handle error conditions  Allow for separating the logic of the code from error-handling  Sometimes no other option to report the value:  constructor  minElement, maxElement  Example – see FileIO

23 Exceptions  Can create our own type of exception (should inherit from Exception)‏ class EmptyArrayException extends Exception { public void EmptyArrayException()‏ { super(); } public void EmptyArrayException(String message)‏ { super(message); }

24 Exceptions  Example of our own Exception --- throw/throws int minElement(int[] numbers) throws EmptyArrayException { // empty array --- throw an exception if (numbers.length == 0)‏ { throw EmptyArrayException(“Empty array given”); } // //... compute smallest element... // }

25 extends vs. implements class vs. interface multiple inheritance

26 Interfaces  An interface specifies a collection of methods  An interface does not have data members or code for methods  A class that implements the interface must provide code (implementation) for all methods listed in the interface interface RemoteControllable { public void play(); public void stop(); public void ffwd(); } class VCR implements RemoteControllable { // must provide code for all methods in RemoteControllable } class DVD implements RemoteControllable { // must provide code for all methods in RemoteControllable }

27 Multiple Inheritance String name; //species void setName(String n) {......... } String name; // pet’s name void setName(String n) {......... } Class MammalClass Pet Class Cat

28 Multiple Inheritance String name; //species void setName(String n) {......... } String name; // pet’s name void setName(String n) {......... } Class MammalClass Pet Which name is inherited? Which setName() is inherited? Class Cat

29  Complex rules required to disambiguate in multiple inheritance  Java does not support multiple inheritance; C++ does Multiple Inheritance String name; //species void setName(String n) {......... } String name; // pet’s name void setName(String n) {......... } Class MammalClass Pet Which name is inherited? Which setName() is inherited? Class Cat

30  What if we still want a Cat to behave like a Mammal and Pet interface Mammal { // all methods (behaviors) common to mammals // no code is specified, just the behavior names (methods) } class Pet { // description of generic pet } class Cat extends Pet implements Mammal { // has all behaviors of a Pet – could override some // must implement all behaviors of Mammal } Multiple Inheritance

31  Can now use Cat objects anywhere Mammal behaviors required or where Pet objects are required public void hunt(Mammal predator, Mammal prey) { // do something; could send a Cat as // either prey or predator } public void doTricks(Pet pet) { // do something; could send a Cat for pet } Multiple Inheritance

32  A Java class can only extend from one other class (single inheritance)  A Java class can implement multiple interfaces – can ambiguity arise? Multiple Interfaces Implementation

33  A Java class can only extend from one other class (single inheritance)  A Java class can implement multiple interfaces – no ambiguity since  an interface cannot have data members  an interface cannot have code (implementation) for methods Multiple Interfaces Implementation


Download ppt "GUI. Swing Class Hierarchy Swing Components Swing Conatiners  JFrame – top-level window to store components."

Similar presentations


Ads by Google