Priscilliaagnes's Blog

April 30, 2010

OOP week 12

Filed under: Uncategorized — Priscillia @ 4:52 pm

Pada hari Kamis, 29 April 2010 pk 8.20-11.40 diadakan kelas OOP week ke 12 yang mengajar adalah Pak Tri. Pak Tri mengajar mengenai GUI.

Komponen-komponen Swing :

JFrame

JFrame adalah jendela tingkat atas dengan judul dan perbatasan. Ukuran frame meliputi area yang ditunjuk untuk perbatasan. Dimensi wilayah perbatasan dapat diperoleh dengan menggunakan getInsets metode. Karena daerah perbatasan termasuk dalam ukuran keseluruhan frame, perbatasan secara efektif mengaburkan sebagian dari frame, membatasi area yang tersedia untuk rendering dan / atau menampilkan subkomponen ke persegi panjang yang memiliki lokasi pojok kiri-atas (insets.left , insets.top) , dan memiliki ukuran width - (insets.left + insets.right) dengan height - (insets.top + insets.bottom).

Kode:

 / / 1.  Buat frame.
 JFrame frame = JFrame baru ("FrameDemo");
 / / 2.  Opsional: Apa yang terjadi ketika frame ditutup?
 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
 / / 3.  Buat komponen dan menempatkan mereka dalam bingkai.
 //... Menciptakan emptyLabel ...
 frame.getContentPane (). tambahkan (emptyLabel, BorderLayout.CENTER);
 / / 4.  Ukuran bingkai.
 frame.pack ();
 / / 5.  Menunjukkannya.
 frame.setVisible (true);

Berikut adalah beberapa rincian tentang kode:

  1. Baris pertama kode menciptakan bingkai menggunakan konstruktor yang memungkinkan Anda mengatur bingkai judul. Yang lain yang sering digunakan JFrame constructor adalah konstruktor-argumen.
  2. Berikutnya menentukan kode apa yang terjadi ketika pengguna menutup frame The. EXIT_ON_CLOSE keluar operasi program ketika pengguna menutup frame. perilaku ini cocok untuk program ini karena program tersebut hanya memiliki satu frame, dan menutup frame membuat program yang tidak berguna.
  3. Bit berikutnya kode menambahkan label kosong ke panel konten frame,. Jika Anda belum terbiasa puas dengan panel dan bagaimana menambahkan komponen mereka silakan baca Menambah Komponen ke Konten Pane .Untuk bingkai yang memiliki menu, yang biasanya Anda menambahkan menu bar untuk bingkai di sini menggunakan setJMenuBar metode. LihatCara Menggunakan Menu untuk rincian.
  4. The pack metode ukuran frame sehingga semua isinya pada atau di atas ukuran yang mereka sukai. Sebuah alternatif untuk pack ini adalah untuk menetapkan ukuran frame secara eksplisit dengan menelepon setSize atau setBounds (yang juga menentukan lokasi frame). Secara umum, dengan menggunakan pack adalah lebih baik untuk menelepon setSize , karena pack daun tata letak bingkai manajer yang bertanggung jawab atas ukuran frame, dan manajer tata letak yang baik menyesuaikan diri dengan dependensi platform dan faktor lain yang mempengaruhi ukuran komponen.contoh ini tidak mengatur lokasi bingkai, tetapi mudah untuk melakukannya dengan baik setLocationRelativeTo atau setLocation metode. Misalnya, sebuah pusat kode berikut pada layar bingkai:
     frame.setLocationRelativeTo (null);
  5. Calling setVisible(true) membuat bingkai muncul pada layar. Kadang-kadang Anda bisa melihat show metode yang digunakan sebagai gantinya,. Kedua penggunaan ini setara tapi kita menggunakan setVisible(true) untuk itu demi konsistensi.

JButton

JButton ()
Membuat sebuah tombol tanpa mengatur teks atau ikon.
JButton ( Action a)
Membuat tombol mana sifat diambil dari
Action diberikan.
JButton ( Icon icon)
Membuat tombol dengan ikon.
JButton ( String text)
Membuat tombol dengan teks.
JButton ( String text, Icon icon)
Membuat tombol dengan teks awal dan ikon.

JPanel

JPanel ()
Menciptakan yang baru JPanel dengan buffer ganda dan tata letak aliran.
JPanel (boolean isDoubleBuffered)
Menciptakan yang baru JPanel dengan FlowLayout dan strategi buffering ditentukan.
JPanelLayoutManager layout)
Buat buffer JPanel baru dengan manajer tata letak yang ditentukan
JPanelLayoutManager layout, boolean isDoubleBuffered)
Membuat JPanel baru dengan manajer tata letak yang ditentukan dan buffering strategi.

JPanel kelas-tujuan menyediakan wadah umum untuk komponen ringan;. Secara default, panel tidak menambahkan warna apa pun latar belakang mereka sendiri kecuali Namun, Anda dapat dengan mudah menambahkan batas kepada mereka dan sebaliknya menyesuaikan lukisan mereka. Rincian dapat ditemukan dalam Pertunjukan Custom Lukisan .

Dalam berbagai jenis tampilan dan nuansa, panel yang buram oleh default dalam. Buram panel bekerja dengan baik konten sebagai panel dan dapat membantu dengan lukisan efisien, seperti yang dijelaskan Menggunakan Top Level Containers dapat. Anda mengubah panel transparansi dengan menyerukan setOpaque metode.

Hasil coding Rush Hour:

package OOP;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import oop.Mobil;
public class RushHourGUI {
private ArrayList mapContent = new ArrayList();
private JFrame frame;
private JPanel contentPane, garagePanel;
private JButton doButton;
private int width=5;
private char[][] map = new char[width][width];
public void initializePanels() {
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
garagePanel = new JPanel();
garagePanel.setLayout(new GridLayout(width, width));
}
public void initializeItems() {
doButton = new JButton("GO");
}
public void initialization() {
initializeItems();
initializePanels();
}
public void buildLayout() {
initialization();
//        buat garage begin
for (int a = 0; a < width; a++) {
for (int b = 0; b < width; b++) {
if (map[a][b] != '0') {
garagePanel.add(new JButton("" + String.valueOf(map[a][b])));
} else {
garagePanel.add(new JLabel());
}
}
}
//buat garage end
contentPane.add(garagePanel, BorderLayout.CENTER);
contentPane.add(doButton, BorderLayout.SOUTH);
}
public void printMap() {
for (int a = 0; a < width; a++) {
for (int b = 0; b < width; b++) {
System.out.print(" " + map[a][b]);
}
System.out.println("");
}
}
public void buildGUI() {
System.out.println("");
ReadFile();
printMap();
updateMapContent();
printList();
buildLayout();
frame = new JFrame();
frame.setTitle("Rush Hour");
frame.setSize(400, 300);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setContentPane(contentPane);
}
public RushHourGUI() {
buildGUI();
}
public int checkDirection(Mobil mobil, char m) {
//0 = horizontal, 1 = vertical, 2 = horizontal vertical
if (mobil.getX1() == mobil.getX2()) {
return 0;
} else if (mobil.getY1() == mobil.getY2()) {
return 1;
} else if (mobil.getX2() == -1 && mobil.getY2() == -1) {
return 2;
}
return - 1;
}
public Mobil findCarIndex(char mobil) {
Mobil myCar = new Mobil();
for (int a = 0; a < width; a++) {
for (int b = 0; b < width; b++) {
if (map[a][b] == mobil) {
if (myCar.getX1() == -1 && myCar.getY1() == -1) {
myCar.setX1(a);
myCar.setY1(b);
} else {
myCar.setX2(a);
myCar.setY2(b);
}
}
}
}
return myCar;
}
public void ReadFile() {
int x = 0, y = 0;
String s;
try {
BufferedReader bf = new BufferedReader(new FileReader(new File("D:/map.txt")));
while (null != (s = bf.readLine())) {
//                System.out.println(s);
StringTokenizer st = new StringTokenizer(s, ",");
if (y == 0) {
width = st.countTokens();
map = new char[width][width];
}
x = 0;
while (st.hasMoreTokens()) {
map[y][x] = st.nextToken(",").charAt(0);
x++;
}
y++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public int checkDirection() {
return- 1;
}
public void updateMapContent() {
for(int a=0 ; a<width ; a++) {
for(int b=0 ; b<width ; b++) {
System.out.print(" "+map[a][b]);
if (map[a][b] != '0' &&  !mapContent.contains(map[a][b])) {
mapContent.add(map[a][b]);
}
}
System.out.println("");
}
}
public void printList() {
System.out.println("My map content:" +mapContent.size());
System.out.println("");
for(int a=0 ; a<mapContent.size() ; a++) {
System.out.print(mapContent.get(a));
}
}
public static void main(String[] args) {
RushHourGUI x = new RushHourGUI();
}
}
package OOP;
import java.awt.BorderLayout;import java.awt.GridLayout;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.StringTokenizer;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import oop.Mobil;
public class RushHourGUI {    private ArrayList mapContent = new ArrayList();    private JFrame frame;    private JPanel contentPane, garagePanel;    private JButton doButton;    private int width=5;    private char[][] map = new char[width][width];
public void initializePanels() {        contentPane = new JPanel();        contentPane.setLayout(new BorderLayout());
garagePanel = new JPanel();        garagePanel.setLayout(new GridLayout(width, width));    }
public void initializeItems() {        doButton = new JButton("GO");    }
public void initialization() {        initializeItems();        initializePanels();    }
public void buildLayout() {        initialization();//        buat garage begin        for (int a = 0; a < width; a++) {            for (int b = 0; b < width; b++) {                if (map[a][b] != '0') {                    garagePanel.add(new JButton("" + String.valueOf(map[a][b])));                } else {                    garagePanel.add(new JLabel());                }            }        }        //buat garage end        contentPane.add(garagePanel, BorderLayout.CENTER);        contentPane.add(doButton, BorderLayout.SOUTH);    }    
public void printMap() {        for (int a = 0; a < width; a++) {            for (int b = 0; b < width; b++) {                System.out.print(" " + map[a][b]);            }            System.out.println("");        }    }
public void buildGUI() {        System.out.println("");        ReadFile();        printMap();        updateMapContent();        printList();        buildLayout();        frame = new JFrame();        frame.setTitle("Rush Hour");        frame.setSize(400, 300);        frame.setResizable(false);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setVisible(true);        frame.setContentPane(contentPane);    }
public RushHourGUI() {        buildGUI();    }    public int checkDirection(Mobil mobil, char m) {        //0 = horizontal, 1 = vertical, 2 = horizontal vertical        if (mobil.getX1() == mobil.getX2()) {            return 0;        } else if (mobil.getY1() == mobil.getY2()) {            return 1;        } else if (mobil.getX2() == -1 && mobil.getY2() == -1) {            return 2;        }        return - 1;    }
public Mobil findCarIndex(char mobil) {        Mobil myCar = new Mobil();        for (int a = 0; a < width; a++) {            for (int b = 0; b < width; b++) {                if (map[a][b] == mobil) {                    if (myCar.getX1() == -1 && myCar.getY1() == -1) {                        myCar.setX1(a);                        myCar.setY1(b);                    } else {                        myCar.setX2(a);                        myCar.setY2(b);
}                }            }        }        return myCar;    }
public void ReadFile() {        int x = 0, y = 0;        String s;
try {            BufferedReader bf = new BufferedReader(new FileReader(new File("D:/map.txt")));
while (null != (s = bf.readLine())) {//                System.out.println(s);                StringTokenizer st = new StringTokenizer(s, ",");                if (y == 0) {                    width = st.countTokens();                    map = new char[width][width];                }                x = 0;                while (st.hasMoreTokens()) {                    map[y][x] = st.nextToken(",").charAt(0);                    x++;                }                y++;            }        } catch (Exception e) {            e.printStackTrace();        }            }    public int checkDirection() {        return- 1;    }    public void updateMapContent() {        for(int a=0 ; a<width ; a++) {            for(int b=0 ; b<width ; b++) {                System.out.print(" "+map[a][b]);                if (map[a][b] != '0' &&  !mapContent.contains(map[a][b])) {                    mapContent.add(map[a][b]);                }            }            System.out.println("");        }    }    public void printList() {        System.out.println("My map content:" +mapContent.size());        System.out.println("");        for(int a=0 ; a<mapContent.size() ; a++) {            System.out.print(mapContent.get(a));        }    }    

public static void main(String[] args) {        RushHourGUI x = new RushHourGUI();    }}

public class Mobil {

    private int x1 = -1;
    private int x2 = -1;
    private int y1 = -1;
    private int y2 = -1;

    public int getX1() {
        return x1;
    }

    public void setX1(int x1) {
        this.x1 = x1;
    }

    public int getX2() {
        return x2;
    }

    public void setX2(int x2) {
        this.x2 = x2;
    }

    public int getY1() {
        return y1;
    }

    public void setY1(int y1) {
        this.y1 = y1;
    }

    public int getY2() {
        return y2;
    }

    public void setY2(int y2) {
        this.y2 = y2;
    }

}

Setelah itu dilanjutkan dengan pelajaran dari Pak Alfon mengenai exception. Exception diajarkan lagi karena banyak yang belum mengerti. Demikian pelajaran pada pertemuan itu. Sampai jumpa minggu depan.


Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: