Jumat, 14 Desember 2012

Membuat Calender dengan Java Swing


Gimana sih cara buat calender di java dalam bentuk table,maka hari ini saya posting biar tidak mati penasaran :p

komponen yang di butuhkan adalah Java.Util.Date
ini sourcecodenya

package newbieilmu.javaswing.calender;

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import com.jtattoo.plaf.acryl.AcrylLookAndFeel;

public class Calender extends JFrame implements ActionListener {

  // Deklarasi
  JComboBox pilihTahun,pilihBulan;
  JScrollPane scr;
  Date dt = new Date();
  int tgl = dt.getDate();
  int thn, bln, d, w;
  DefaultTableModel tabMode;
  String[][] nilaiBulan;
  JTable tabel;
  String[] row_0 = new String[7];
  Object[] row_1 = new Object[7];
  Object[] row_2 = new Object[7];
  Object[] row_3 = new Object[7];
  Object[] row_4 = new Object[7];
  Object[] row_5 = new Object[7];
  Object[] row_6 = new Object[7];
  JLabel today = new JLabel();

  // MAIN
  public static void main(String[] args) {
   try{
   
   UIManager.setLookAndFeel(new AcrylLookAndFeel());
   }
  catch (UnsupportedLookAndFeelException e){
 //handle exception
  }
   Calender frame1 = new Calender();
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame1.setResizable(false);
    frame1.setTitle("Kalender");
    frame1.setSize(295, 235);
    frame1.setVisible(true);
  }

  // KONSTRUKTOR
  public Calender() {
    // Set Layout
    this.getContentPane().setLayout(null);

    // Membuat String Array itemBulan
    String[] itemBulan = {
        "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli",
        "Agustus", "September", "Oktober", "November", "Desember"};
    // Menambahkan itemBulan pada komponen JComboBox (pilihBulan)
    pilihBulan  = new JComboBox(itemBulan);
    // Mengatur Komponen
    pilihBulan.setEditable(true);
    pilihBulan.setBounds(new Rectangle(12, 9, 99, 21));

    // Membuat dan menambahkan item JComboBox (pilihTahun)
    pilihTahun = new JComboBox();
    pilihTahun.setEditable(true);
    pilihTahun.setBounds(new Rectangle(154, 8, 110, 21));
    int i = 1900;
    for (i = 1900; i < 2099; i++) {
      String a = Integer.toString(i);
      String item = a;
      // Menambahkan item
      pilihTahun.addItem(item);
    }

    // Mengambil tahun dan bulan
    thn = dt.getYear();
    bln = dt.getMonth()+1;
    // Membuat String Array namaHari
    String[] namaHari = {
        "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"};
    // Memanggil methode buatCal untuk mendapatkan nilaiBulan
    buatCal(thn, bln);
    // Membuat TableModel dengan parameter nilaiBulan dan namaHari
    tabMode = new DefaultTableModel(nilaiBulan, namaHari);
    // Membuat Table dengan parameter tabMode
    tabel = new JTable(tabMode);

    // Membuat JScrollPane
    scr = new JScrollPane();
    scr.setBounds(new Rectangle(11, 35, 258, 136));
    // Menambahkan tabel pada ScrollPane
    scr.getViewport().add(tabel);

    // Set Select komponen
    pilihTahun.setSelectedIndex(thn);
    pilihBulan.setSelectedIndex(bln-1);
    // Menambahkan Action Listener
    pilihBulan.addActionListener(this);
    pilihTahun.addActionListener(this);
    // Mengatur Label
    today.setBounds(new Rectangle(11, 177, 259, 22));
    today.setText("Today :    " + tgl + " / " + (bln + 1) + " / " + (thn + 1900));
    // Menambahkan Komponen pada Frame
    this.getContentPane().add(pilihBulan);
    this.getContentPane().add(pilihTahun);
    this.getContentPane().add(today);
    this.getContentPane().add(scr);

  }

  /**
   * Methode getDatInMon
   * Ket : Mengambil jumlah hari dari bulan Sekarang
   * @param mon int : bulan
   * @param yer int : tahun
   * @return int : int
   */
  public int getDayInMon(int mon, int yer) {
    Date prevDay = new Date(yer, mon, 0);
    return prevDay.getDate();
  }

  /**
   * Methode buatCal
   * Ket : Untuk menghasilkan nilai-nilai tanggal (Kalender)
   * @param yer int : tahun
   * @param mon int : bulan
   * @return String[][] : nilai tanggal
   */
  public void buatCal(int yer, int mon) {
    // Mengosongkan nilai String Array
    nilaiBulan = new String[7][7];
    row_0 = new String[7];
    // Mengambil nilai waktu sekarang
    Date bulan = new Date(yer, mon - 1, 1);
    int iDayOfFirst = bulan.getDay();
    int iDaysInMonth = getDayInMon(mon, yer);
    int iVarDate = 1;
    // Mendapatkan nilai hari yang pertama
    for (d = iDayOfFirst; d < 7; d++) {
      String tanggal = Integer.toString(iVarDate);
      if (iVarDate == tgl) {
        tanggal = "((" + tanggal + "))";
      }
      nilaiBulan[0][d] = tanggal;
      // nilai hari baris 1
      row_0[d] = nilaiBulan[0][d];
      iVarDate++;
    }
    // Mendapatkan nilai hari berikutnya
    for (w = 1; w < 7; w++) {
      for (d = 0; d < 7; d++) {
        if (iVarDate <= iDaysInMonth) {
          String tanggal = Integer.toString(iVarDate);
          if (iVarDate == tgl) {
            tanggal = "((" + tanggal + "))";
          }
          nilaiBulan[w][d] = tanggal;
          // nilai hari baris 2 - 7
          row_1[d] = nilaiBulan[1][d];
          row_2[d] = nilaiBulan[2][d];
          row_3[d] = nilaiBulan[3][d];
          row_4[d] = nilaiBulan[4][d];
          row_5[d] = nilaiBulan[5][d];
          row_6[d] = nilaiBulan[6][d];
          iVarDate++;
        }
      }
    }

  }

  /**
   * Methode actionPerformed
   * Ket : Merespon nilai yang dipilih dari komponen JComboBox
   * @param e ActionEvent
   */
  public void actionPerformed(ActionEvent e) {
    // Mengambil nilai pilihTahun
    String tahun = (String) pilihTahun.getSelectedItem();
    thn = Integer.parseInt(tahun) - 1900;
    // Mengambil nilai pilihBulan
    int bulan = pilihBulan.getSelectedIndex();
    bln = bulan + 1;
    // Menghapus semua Baris dari tabel
    for (int is = 0; is < 7; is++) {
      tabMode.removeRow(0);
    }
    // Memanggil methode buatCal
    buatCal(thn, bln);
    // Menambahkan Baris pada Tabel
    tabMode.addRow(row_0);
    tabMode.addRow(row_1);
    tabMode.addRow(row_2);
    tabMode.addRow(row_3);
    tabMode.addRow(row_4);
    tabMode.addRow(row_5);
    tabMode.addRow(row_6);
  }

} // Akhir Kelas

beginilah viewnya

Tidak ada komentar:

Posting Komentar