31 Ocak 2019 Perşembe

Awt CardLayout Sınıfı

Giriş
Şu satırı dahil ederiz
import java.awt.CardLayout;
Sihirbaz(Wizard) tarzı İleri/Geri düğmelerine basılınca aynı ekranda farklı bileşenler göstermek için kullanılır.

Merkezi JPanel nesnesin sayfalar eklenir. Şöyle yaparız. Bu Panel CardLayout kullanır
public JPanel getPanelCenter() {
  if (panelCenter == null) {
    panelCenter = new JPanel();
    panelCenter.setLayout(new CardLayout(0, 0));
    panelCenter.add(getPanelHome(), "PanelHome");
    panelCenter.add(getPanelLicenseData(), "PanelLicense");
  }
  return panelCenter;
}
Daha sonra CardLayout nesnesinin next() veya previou() metodları ile bu eklenen panellerden istenilen gösterilir

constructor
Şöyle yaparız.
CardLayout cl = new CardLayout();
JPanel cards = new JPanel(cl);
gui.add(cards);
cards.add(new JLabel("Level 1"), "game");
cards.add(new JLabel("High Scores"), "scores");

ActionListener al = new ActionListener(){
  public void actionPerformed(ActionEvent ae) {
    if (game.isSelected()) {
      cl.show(cards, "game");
    } else {
      cl.show(cards, "scores");
    }
  }
};


Awt GradientPaint Sınıfı

Giriş
Bu sınıf Graphics2D ile kullanılır.

Örnek
Şöyle yaparız
Graphics2D g2 = ...g;
GradientPaint gp =  ...;
g2.setPaint(gp);
constructor
Şöyle yaparız
GradientPaint gp = new GradientPaint(0f,0f,Color.blue,0f,30f,Color.green);

JAXB @XmlElement Anostasyonu - Nesne İçin Kullanılacak Tag'i Belirtir

Giriş
Bazı notlar

Örnek - Aynı Nesne Listesi Wrapper Tag İçinde
Eğer nesne listesi kullanıyorsak ve nesnelerimiz bir wrapper XML tag'i içindeyse bu anotasyonun başına @XmlElementWrapper(name="foos") yazılabilir. Böyle XML şöyle olur
<rootelement>
  <foos>
    <foo>...<foo>
    <foo>...<foo>
  <foos>
</rootelement>
Sınıf ise şöyledir
@XmlRootElement(name="rootelement")
class RootElement {

  @XmlElementWrapper(name="foos")
  @XmlElement(name="foo")
  private List<Foo> fooList;

  ...
}


@XmlRootElement(name= "f")
class Foo {
  @XMLElement
  String id;
  ...
}
Örnek - Polymorphic Nesne Listesi
Elimizde şöyle bir kod olsun. Burada ChildA sınıfı için beklenen tag büyük harfle başlayan "ChildA"
@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
  @XmlElements({
    @XmlElement(name = "ChildA", type = ChildA.class),
    @XmlElement(name = "ChildB", type = ChildB.class),
    })
  private List<Parent> elements;
  ...
}
Parent nesnesi şöyledir
@XmlSeeAlso({ChildA.class, ChildB.class})
public class Parent {
  ...
}
ChildA şöyledir. Normalde sınıf için küçük harfle başlayan "childA" tag'i bekleniyor.
@XmlRootElement(name = "childA")
public class ChildA extends Parent {
  ...
}
ChildB şöyledir. Normalde sınıf için küçük harfle başlayan "childB" tag'i bekleniyor.
@XmlRootElement(name = "childB")
public class ChildB extends Parent {
  ...
}
Örnek - İlgisiz Nesneler Listesi
Şöyle yaparız. Burada fileOrInline alanı ya File ya da Inline nesnesi olabiliyor.
@XmlElements({
  @XmlElement(name = "file", required = true, type = File.class),
  @XmlElement(name = "inline", required = true, type = Inline.class)
})
protected List<Object> fileOrInline;
1. getter Yöntemi
getter yöntemini kullanıyorsak, get edilen nesne primitive değilse, nesne XML'den okunurken getter çağrılır.

Örnek - getter 
Şöyle yaparız
public class Item {
  private String dataType;
  private int data;
  
  @XmlElement
  public String getDataType(){
    return dataType;
  }
  public void setDataType(String dataType){
    this.dataType = dataType;
  }

  
  @XmlElement
  public int getData(){
    return data;
  }
  public void setData(int data){
    this.data = data;
  }
  
}
2. Alanlar

name Alanı
Örnek
Elimizde şöyle bir XML olsunn
<ProtocolloList>
  <protocollo>
    <numero>1</numero>
    <data>2014-06-23</data>
    <oggetto/>
    <destinatario/>
    <operatore/>
  </protocollo>
     ...
</ProtocolloList>
Şöyle yaparız
@XmlRootElement(name = "ProtocolloList")
public class ProtocolloList {

  private ArrayList<Protocollo> ProtocolloList;

  @XmlElement(name = "protocollo")
  public ArrayList<Protocollo> getProtocolloList() {
      return ProtocolloList;
  }

}
nillable Alanı
Şöyle yaparız.
@XmlElement(name = "Comment",nillable=true)
public Comment comment;
required Alanı
Şöyle yaparız.
@XmlElement(name = "Foo", required = true)
protected List<Foo> list;