Java und Komponente Part2

zurück zu Java and Components Part 1 < -- --> Java and networking_1

Reflection

Mit reflections kann ein Objekt oder eine Klasse analysiert werden

Object obj
obj.getClass().getName();                      //obj.getClass() liefert ein Objekt vom Typ Class
Class c
c.getSuperclass().getName();                               //liefert Oberklasse
Class[ ] interfaces= c.getInterfaces();  //liefert interfaces
for(int i=0; i<interfaces.length; i++)
{ System.out.print(interfaces[i].getName()); }
Constructor[ ] constructors = c.getDeclaredConstructors();               //liefert Konstruktoren
Field[ ] fields = c.getDeclaredFields();                                   //liefert fields ->get- setMethoden
Method[ ] methods = c.getDeclaredMethods();                     //liefert methoden

Objektserialisierung

einfache Serialisierung                           transient: Attribut wird nicht serialisiert

FileOutputStream out =new FileOutputStream("date");
ObjectOutputStream s = new ObjectOutputStream(out);
s.writeObject("Today");
s.writeObject(new Date());
s.flush();

FileInputStream in = new FileInputStream("date");
ObjectInputStream s= new ObjectInputStream(in);
String today = (String)s.readObject();   //Downcast von Object
Date date = (Date)s.readObject();

angepasste Serialisierung

public class blabla implements Seralizable
  private transient int size = 0;               //transient -> wird nicht serialisiert

//writeObject und readObject geschrieben werden
private void writeObject(ObjectOutputStream out) throws IOException
{ out.defaultWriteObject();
  //do your own stuff }

private void readObject(ObjectInputStream in) throws IOException
{ in.defaultReadObject();
  //do your own stuff }

Javadoc

/**
 * Dieser erste Satz wird in der Übersicht verwendet. <br>
 * Weiter kann man hier noch Sachen schreiben
 *
 * @author silvio schneider                             //author
 * see <a href="{@docRoot}/hallo.html"> hallo</a>   // tags mit { } können überall verwendet werden
 * @depecated don't use this method           //überholt
 * {@link package.class#member label}      //link innerhalb der Dokumentation
 * @param aObject  an object to use             //dokumentiert einen Parameter
 * @return true oder false                              //dokumentiert den return wert
 * @see Kapitel 37"                                      //text
 * @see java.lang.Thread#suspend()           //anker
 * @serial, @serialData, @serialField          //für serialsierung
 * @since @version ver1.0                              //Versions-Text
 * @throws, @exception
 */

public void method(Object aObject) { }            //Javadoc für methode

Collection Framework

Fünf Interfaces:

Collection <- Set <- SortedSet               //Elemente kommen nicht merfach vor
Collection <-List                                   //geordnete Collection
Map <- SortedMap                                //Schlüssel/Wert-Paare

public interface Collection
{              int size();               boolean isEmpty();             boolean contains(Object element);
                Boolean add(Object element);                           boolean remove(Object element);
                Boolean addAll(Collection c);                          Iterator iterator();
}

public interface Iterator                                                     readonly Wrapper:
{               boolean HasNext();                                           unmodifiableCollection(Collection c)
                Object next();
                void remove();      //Optional
}

Implementationen

HashSet, TreeSet
ArrayList, LinkedList (doppelt verkettet, zugriff mit ListIterator)
HashMap, TreeMap

Sortierreihenfolge

public interface Comparator
{ int compare (Object o1, Object o2); }

JavaBeans

public class HelloBean implements Serializable{             //solte in der Regel serialisierbar sein
                                                                                            //Introspection erkundet public elemente
// no args Construktor                                                  // bassierend auf Reflection
public HelloBean() {text = "Hallo"; }

//Properites     Eigenschaften der Bean
public T getBlabla();                                          //t steht für Typ
public void setBlabla(T aValue);

//Events                       Zustandsänderung der Bean
public void addBlablaListener(BlablaListener lis);
public void removeBlablaListener(BlablaListener lis)

//Bound-Properities
public void addPropertyChangeListener(PropertyChangeListener pcl);
public void remove addPropertyChangeListener(PropertyChangeListener pcl);
}

Visual Beans: extends java.awt.Component

Komponente: Event Handling, Properties, Methods, Interfaces, Persitence (serialization)

Swing                         Lightweight Components

import javax.swing.*;

public class View extends JFrame implements Observer
{
  private JButton myButton;

  public View(Count model)
{ super("hallo");
 myButton = new JButton(""+model.getValue());
 myButton.addActionListener(new IncListener(model));
 getContentPane().add(myButton);
 pack();
 setVisible(true);
model.addObserver(this);
}

public void update(Observable model, Object arg)
{ myButton = new JButton(""+((Count)model).getValue()); }

Swing besitzt eine Modle-View-Controller (MVC) Architektur
Listener von EventListener ableiten, allgemein nicht Threadsafe

Graphics 2D API

public class CustomButton extends JButton
{
 public void paintComponent(Graphics g)
{ super.paintComponent(g)    //paint Background
  setOpaque(false);                               // durchsichtig, kein Rechteck, z.B. Kreis
  g.drawXY( );                                     //custom painting
 }
}

Methoden des Graphics Objektes

setClip(int x, int y, int width, int height) und getClipBounds()               //Clipping Area
setFont(Font font) und getFont()
setColor(Color c) und getColor()

drawString(String str, int x, int y)          //setStrocke( Stil und dicke der Zeichenlinie)
drawRect(int x, int y, int width, int height) und fillRect(�)
drawArc() und fillArc( )

Klasse Color für Farben z.B Color.blue

  Schriften

Font(String name, int style, int size)
FontStyle: Font.PLAIN, Font.BOLD, Font.ITALIC

Font font = new Font("Serif"+ Font.BOLD + Font.ITALIC, 350);

  Bilder

Toolkit toolkit = Toolkit.getDefaultToolkit() ;
Imag duke1 = toolkit.createImage("duke.gif");

drawImage(Image img, int x, int y, ImageObserver observer)

GradientPaint:   Farbübergang
TexturePaint:    Muster

Koordinaten System:

User Space Geräteunabhängig
Device Space AusgabeGerät (Bildschirm, Drucker)

zurück zu Java and Components Part 1 < -- oder --> gehe zu Java and networking_1