27 Şubat 2020 Perşembe

Swing JFileChooser Sınıfı

Giriş
Şu satırları dahil ederiz.
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
JavaFx'teki karşılığı FileDialog sınıfı.

Kullanım
Örnek - Save İşlemi
Şöyle yaparızz
JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(...);
//filter the files
FileNameExtensionFilter filter = new FileNameExtensionFilter("*.Images", "jpg","gif",
  "png");
fc.addChoosableFileFilter(filter);
int result = fc.showSaveDialog(null);

if(result == JFileChooser.APPROVE_OPTION){
  File selectedFile = file.getSelectedFile();
  ...
}
else if(result == JFileChooser.CANCEL_OPTION){
  System.out.println("No File Select");
}

constructor
Şöyle yaparız.
JFileChooser fc = new JFileChooser();
addChoosableFileFilter metodu
Yeni bir filter ekler. Şöyle yaparız.
FileNameExtensionFilter filter = new FileNameExtensionFilter("Mp3 Files", "mp3");
fcc.addChoosableFileFilter (filter);
getSelectedFile metodu
Şöyle yaparız.
File f = fc.getSelectedFile ();
setAcceptAllFileFilterUsed metodu
Şöyle yaparız.
fc.setAcceptAllFileFilterUsed (false);
setCurrentDirectory metodu
Şöyle yaparız.
fc.setCurrentDirectory(new File(...));
setFileFilter metodu
Şöyle yaparız.
FileNameExtensionFilter filter = new FileNameExtensionFilter(
                "JPG & GIF Images", "jpg", "gif");
fc.setFileFilter (filter);
Şöyle yaparız.
FileNameExtensionFilter filter=new FileNameExtensionFilter("Naoumis Database","naoumis");
fc.setFileFilter(filter);
setFileSelectionMode metodu
Şöyle yaparız.
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
setMultiSelectionEnabled metodu
Şöyle yaparız.
fc.setMultiSelectionEnabled(false);
showOpenDialog metodu
Örnek
Şöyle yaparız.
//Show the file chooser dialog 
int returnVal = fc.showOpenDialog (null);
Daha sonra şöyle yaparız.
//If the user chose a file then return it 
if (returnVal == JFileChooser.APPROVE_OPTION) {
  File file = fc.getSelectedFile();
  ...
} else {
  System.out.println("Open command cancelled by user.");
}
Örnek
Şöyle yaparız.
if (fc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION)
{
  File file = fc.getSelectedFile();
  ...
}
showSaveDialog metodu
Şöyle yaparız.
if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {  
  //Retrieve file user chose
  File file = fc.getSelectedFile();
  ...
}


LocalDate Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.time.LocalDate;
Açıklaması şöyle.
LocalDate holds only the date part without a time-zone in the ISO-8601 calendar system.
- Sadece tarihi bilir. Saati ve zaman dilimini bilmez. Yani 2015-01-01 gibi bir değer gösterir.
- Saat bilmediği için 2015-01-01 12:00:00 gibi bir değer gösteremez.

Kullanım
of metodunu kullanırken rakam yerine enum kullanmak daha iyi
Örnek
Şöyle yaparız
LocalDate.now();                      // 2022-10-06
LocalDate.of(2022, Month.JANUARY, 1); // 2022-01-01
LocalDate.of(2022, 1, 1);             // 2022-01-01
LocalDate.of(1,9,32);                 // Error

datesUntil metodu
Java 9 ile geliyor. İki LocalDate arasındaki farkı Stream olarak verir.
Örnek
Şöyle yaparız.
LocalDate preDate = ...;
LocalDate endExclusive = ...;
List<LocalDate> dateList 
            = preDate.datesUntil(endExclusive).collect(Collectors.toList());
System.out.println(dateList);
Çıktı olarak şunu alırız.
[2018-06-20, 2018-06-21]
Örnek
2020 yılında hafta için günleri bulmak için şöyle yaparız.
Set<DayOfWeek> weekend = EnumSet.of(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY);
LocalDate.of(2019, Month.JANUARY, 1)
  .datesUntil(LocalDate.of(2020, Month.DECEMBER, 31), Period.ofDays(1))
  .filter(x -> !weekend.contains(x.getDayOfWeek()))
  .forEachOrdered(System.out::println);
format metodu
Belirtilen formatta string'e çevirir.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
LocalDate date = ...;
System.out.println(date.format(formatter));
isAfter metodu
Şöyle yaparız
LocalDate date = LocalDate.of(2005, 1, 1); // Assign date
LocalDate today = LocalDate.now();
if(date.isAfter(today){...}
isBefore metodu
Şöyle yaparız
LocalDate date = LocalDate.of(2005, 1, 1); // Assign date
LocalDate today = LocalDate.now();
if(date.isBefore(today){...}
isLeapYear metodu
Açıklaması şöyle. Yıl = 0 için true döner.
It is equivalent to the proleptic Gregorian calendar system, in which today's rules for leap years are applied for all time. For most applications written today, the ISO-8601 rules are entirely suitable. However, any application that makes use of historical dates, and requires them to be accurate will find the ISO-8601 approach unsuitable.
Örnek ver

lenghtOfMonth metodu
Örnek ver

minusDays metodu
Örnek ver

minusYears
Belirtilen yılı çıkartır.
LocalDate dateToCheck = LocalDate.now().minusYears(20);
now metodu
Şimdiki zamanı verir.
LocalDate today = LocalDate.now();
Gerekirse zaman dilimi ile kullanılabilir.
LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) );
of metodu
Belirtilen zamana göre nesne oluşturur.
LocalDate date = LocalDate.of(2005, 1, 1);
parse metodu
DateTimeFormatter nesnesinde belirtilen formata göre parse eder

Örnek
Şöyle yaparız.
String str = "01/01/2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
LocalDate dateTime = LocalDate.parse(str, formatter);
Örnek
Şöyle yaparız.
String input = "05/30/2018" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/dd/uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;
plus metodu
LocalDate plus metodu Ptifall yazısına taşıdım.

plusDays metodu
Belirtilen günü ekler.
Örnek
Şöyle yaparız.
LocalDate dateToCheck = LocalDate.now().plusDays(1);
Örnek
Elimizde şöyle bir kod olsun.
LocalDate birthA = LocalDate.of(1965, Month.SEPTEMBER, 27);
LocalDate eventA = LocalDate.of(1992, Month.MAY, 9);
Şöyle yaparız.
LocalDate halfA = eventA.plusDays(ChronoUnit.DAYS.between(birthA, eventA));
plusMonths metodu
Belirtilen ayı ekler.
LocalDate localDate = LocalDate.now();
localDate.plusMonths(numberOfMonths);
plusYears metodu
LocalDate'i ileri götürmek çok kolay.
LocalDate.now().plusYears(1)
toString metodu
ISO 8601 formatında çıktı verir.
The output will be in the ISO-8601 format uuuu-MM-dd.
with metodu
Setter gibi düşünülmeli. Sadece belirtilen alana belirtilen değeri atar. Diğer alanlar değişmez.
Örnek
Şöyle yaparız.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yy");
LocalDate end = LocalDate.parse("30-09-20", formatter)
    .plusMonths(3)                             // add three months to your date
    .with(TemporalAdjusters.lastDayOfMonth()); // with the last day of the month
withDayOfMonth metodu
Setter gibi düşünülmeli. Sadece gün alanına belirtilen değeri atar. Diğer alanlar değişmez.

withMonth metodu
Setter gibi düşünülmeli. Sadece ay alanına belirtilen değeri atar. Diğer alanlar değişmez.