25 Ağustos 2017 Cuma

JMenuBar Sınfı

Giriş
Şu satırı dahil ederiz.
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
Bu sınıf bir JFrame nesnesine menü eklemek içindir.

Örnek
Elimizde bir frame olsun. Şöyle yaparız.
setJMenuBar(new MyMenuBar());
MenuBar şöyledir.
class MyMenuBar extends JMenuBar implements ActionListener{
  public static JMenuItem itmOpen;

  public MyMenuBar() {
    JMenu menuFile = new JMenu("File");

    itmOpen = new JMenuItem("Open...");
    itmOpen.addActionListener(this);

    add(menuFile);
    menuFile.add(itmOpen);
  }

  @Override
  public void actionPerformed(ActionEvent e) {
    JMenuItem source = (JMenuItem)e.getSource();

    if(source == itmOpen){
      ...
    }
  }
}



Jackson ObjectMapper Sınıfı

Giriş
Eski kodlarda şu satırı dahil ederiz.
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
Yeni kodlarda şu satırı dahil ederiz.
import com.fasterxml.jackson.databind.ObjectMapper;
constructor
Şöyle yaparız.
ObjectMapper mapper = new ObjectMapper();
configure metodu
Şöyle yaparız.
/*
* This allows the ObjectMapper to accept single values for a collection.
* For example: "location" property in the returned JSON is a collection that 
* can accept multiple objects but, in deserialization process, this property just 
* have one object and causes an Exception.
*/
mapper.configure(Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
Şöyle yaparız.
/* 
* If some JSON property is not present, avoid exceptions setting
* FAIL_ON_UNKNOWN_PROPERTIES to false 
*/
mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
defaultPrettyPrintingWriter metodu
Bu yöntem eski. Şu satırı dahil ederiz.
import org.codehaus.jackson.map.ObjectWriter;
Şöyle yaparız.
ObjectWriter writer = mapper.defaultPrettyPrintingWriter();
Şöyle yaparız.
Object json = ...;
String indented = mapper.writerWithDefaultPrettyPrinter()
                        .writeValueAsString (json);
enable metodu
Bu yöntem yeni. Şöyle yaparız.
mapper.enable (SerializationFeature.INDENT_OUTPUT);
readValue metodu - File + Class
Şöyle yaparız.
//JSON from file to Object
Foo foo = mapper.readValue (new File("c:\\values.json"), Foo.class);
readValue metodu - String + Class
Şöyle yaparız.
Class<T> pojo = ...;
String json = ...;
try {
  T mapped = mapper.readValue (str, pojo);
} catch (IOException e) {
  ...
}
readValue metodu - String + TypeReference
Dönüş tipi olarak Map kullanmak istersek şöyle yaparız.
import org.codehaus.jackson.type.TypeReference;

String str = "{\"Welcome\":1,\"Hi\":2,\"Hello\":1,\"Jin\":1}";

Map<String, String> map = mapper.readValue(str,
  new TypeReference<HashMap<String, String>>() {}
);
Dönüş tipi olarak List kullanmak istersek şöyle yaparız.
List<Map<String, Object>> list = mapper.readValue(json, 
  new TypeReference<List<Map<String, Object>>>(){});
readValue metodu - URI + TypeReference
Şöyle yaparız.
/* JSON provider */
URL url = new URL("http://...");

/* Get all computers */
List<Computer> computers = mapper.readValue(url,
  new TypeReference<List<Computer>>(){});
writeValue metodu
Eğer yazılmak istenen nesne içinde kendine referanslar (cycle) varsa exception fırlatır. Exception'ı görmek için şöyle yaparız.
ObjectMapper mapper = new ObjectMapper();
try {
  mapper.writeValue( new File ( "test.json" ), Paths.get( "/home/tes/") );
} catch ( IOException e ) {
  e.printStackTrace();
}
writeValueAsString metodu
Örnek
Şöyle yaparız.
System.out.println(mapper.writeValueAsString(foo));
Örnek
Yazılacak şey list ise json array olarak çıktı verir. Şöyle yaparız.
List<C> cList = ...;
ObjectMapper mapper = new ObjectMapper();
try {
  String jsonArray = mapper.writeValueAsString(cList);
  final CollectionType cType =
            mapper.getTypeFactory().constructCollectionType(List.class, C.class);
  cList = mapper.readValue(jsonArray, cType);
} catch (JsonProcessingException e | IOException e) {
  //handle
}
writerWithDefaultPrettyPrinter metodu
Örnek ver