Priscilliaagnes's Blog

May 7, 2010

OOP week 13

Filed under: Uncategorized — Priscillia @ 4:10 pm

Pada hari Kamis, 6 Mei 2010 pk 8.20-11.40 diadakan kelas OOP week ke 13. Pada pertemuan ini membahas tentang Rush Hour.

Rush Hour

Rush Hour adalah game yang cara bermainnya adalah memindahkan sebuah mobil yang telah ditentukan oleh pembuat game tersebut, misalnya: mobil warna pink ke arah tanda panah atau keluar arena. Bila pemain berhasil mengelurkan atau mengarahkan pada tanda panah tersebut maka pemain tersebut dapat menuju ke level berikutnya atau pemain tersebut berhasil menyelesaikannya.

Rush hour merupakan project saya pada semester 2 ini. Hasil codingnya adalah sebagai berikut:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GarageGUI {
int n = 5;
private JFrame frame;
private JPanel contentPane, garagePanel, mainPanel, actionPanel;
private JButton doButton;
private JComboBox vehicleCombo, directionCombo;
private JLabel stepLabel;
private JTextField stepField;
private char[][] map;
private List listOfVehicle = new ArrayList();
private JButton buttons;
private Color[] colors = {Color.WHITE,Color.BLUE, Color.CYAN, Color.GREEN,
Color.MAGENTA,Color.ORANGE, Color.PINK,Color.CYAN,Color.RED,Color.LIGHT_GRAY,Color.YELLOW};
private String[] variables = {"i","c","u","f","g","e","b"};
private String[] directions = {"up", "down", "left", "right"};
private Color buttonColor;
private EventHandler handler = new EventHandler();
public void initializeItems() {
doButton = new JButton("DO");
vehicleCombo = new JComboBox(variables);
directionCombo = new JComboBox(directions);
stepLabel = new JLabel("Step: ");
stepField = new JTextField();
}
public void initializePanels() {
mainPanel = new JPanel(new BorderLayout());
actionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));
garagePanel = new JPanel(new GridLayout(5, 5));
contentPane = new JPanel(new BorderLayout(5, 5));
}
public void initialization() {
initializeItems();
initializePanels();
}
public void populateDefaultSetting() {
}
public void registerEventListener() {
doButton.addActionListener(handler);
}
public void buildLayout() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (map[i][j] != '0') {
buttons = new JButton("" + String.valueOf(map[i][j]));
garagePanel.add(buttons);
buttonColor = getColorOfVehicle(map[i][j]);
if(buttonColor != null) {
buttons.setForeground(Color.BLACK);
buttons.setBackground(buttonColor);
buttons.setEnabled(false);
}
} else {
garagePanel.add(new JLabel());
}
}
}
actionPanel.add(vehicleCombo);
actionPanel.add(directionCombo);
actionPanel.add(stepLabel);
actionPanel.add(stepField);
actionPanel.add(doButton);
mainPanel.add(garagePanel, BorderLayout.CENTER);
mainPanel.add(actionPanel, BorderLayout.SOUTH);
contentPane.add(mainPanel, BorderLayout.CENTER);
contentPane.add(new JPanel(),BorderLayout.SOUTH);
contentPane.add(new JPanel(),BorderLayout.NORTH);
contentPane.add(new JPanel(),BorderLayout.WEST);
contentPane.add(new JPanel(),BorderLayout.EAST);}
public void buildGUI() {
readFile();
initialization();
buildLayout();
populateDefaultSetting();
registerEventListener();
frame = new JFrame("Rush Hour");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setContentPane(contentPane);
frame.setVisible(true);
}
public GarageGUI() {
buildGUI();
}
public void readFile() {
try {
File file = new File("D:/map.txt");
System.out.println("masuk");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String s;
int x = 0, y = 0, width;
while (null != (s = br.readLine())) {
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);
if (!listOfVehicle.contains(map[y][x]) && map[y][x] != '0') {
listOfVehicle.add(map[y][x]);
}
x++;
}
y++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public Color getColorOfVehicle (char x) {
char a = '0';
for(int i =0; i<listOfVehicle.size();i++) {
a = listOfVehicle.get(i).toString().charAt(0);
if (a==x) {
return colors[i];
}
}
return null;
}
public static void main(String[] args) {
GarageGUI garageGUI = new GarageGUI();
}
private class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source != null && source == doButton) {
String myVehicle = vehicleCombo.getSelectedItem().toString();
String myDirection = directionCombo.getSelectedItem().toString();
int myStep = -1;
try{
myStep = Integer.parseInt(stepField.getText());
} catch (Exception ex){
myStep = 0;
}
System.out.println(myVehicle + " " + myDirection + " " + myStep);
if(myStep > 0 ) {
System.out.println("do someething");
}
else {
System.out.println("illegal move");
}
}
}
}
}
import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField; public class GarageGUI { int n = 5;    private JFrame frame;    private JPanel contentPane, garagePanel, mainPanel, actionPanel;    private JButton doButton;    private JComboBox vehicleCombo, directionCombo;    private JLabel stepLabel;    private JTextField stepField;    private char[][] map;    private List listOfVehicle = new ArrayList();    private JButton buttons;    private Color[] colors = {Color.WHITE,Color.BLUE, Color.CYAN, Color.GREEN,    Color.MAGENTA,Color.ORANGE, Color.PINK,Color.CYAN,Color.RED,Color.LIGHT_GRAY,Color.YELLOW};    private String[] variables = {"i","c","u","f","g","e","b"};    private String[] directions = {"up", "down", "left", "right"};    private Color buttonColor;    private EventHandler handler = new EventHandler(); public void initializeItems() {        doButton = new JButton("DO");        vehicleCombo = new JComboBox(variables);        directionCombo = new JComboBox(directions);        stepLabel = new JLabel("Step: ");        stepField = new JTextField();    } public void initializePanels() {        mainPanel = new JPanel(new BorderLayout());        actionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));        garagePanel = new JPanel(new GridLayout(5, 5));        contentPane = new JPanel(new BorderLayout(5, 5));    } public void initialization() {        initializeItems();        initializePanels();    } public void populateDefaultSetting() {    } public void registerEventListener() {      doButton.addActionListener(handler);    } public void buildLayout() {        for (int i = 0; i < n; i++) {            for (int j = 0; j < n; j++) {                if (map[i][j] != '0') {                    buttons = new JButton("" + String.valueOf(map[i][j]));                    garagePanel.add(buttons);                    buttonColor = getColorOfVehicle(map[i][j]);                    if(buttonColor != null) {                        buttons.setForeground(Color.BLACK);                        buttons.setBackground(buttonColor);                        buttons.setEnabled(false);                    }                } else {                    garagePanel.add(new JLabel());                }            }        }        actionPanel.add(vehicleCombo);        actionPanel.add(directionCombo);        actionPanel.add(stepLabel);        actionPanel.add(stepField);        actionPanel.add(doButton); mainPanel.add(garagePanel, BorderLayout.CENTER);        mainPanel.add(actionPanel, BorderLayout.SOUTH); contentPane.add(mainPanel, BorderLayout.CENTER);        contentPane.add(new JPanel(),BorderLayout.SOUTH);        contentPane.add(new JPanel(),BorderLayout.NORTH);        contentPane.add(new JPanel(),BorderLayout.WEST);        contentPane.add(new JPanel(),BorderLayout.EAST);} public void buildGUI() {        readFile();        initialization();        buildLayout();        populateDefaultSetting();        registerEventListener();        frame = new JFrame("Rush Hour");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setSize(300, 300);        frame.setLocationRelativeTo(null);        frame.setResizable(false);        frame.setContentPane(contentPane);        frame.setVisible(true);    } public GarageGUI() {        buildGUI();    } public void readFile() {        try {            File file = new File("D:/map.txt");            System.out.println("masuk");            FileReader fr = new FileReader(file);            BufferedReader br = new BufferedReader(fr);            String s;            int x = 0, y = 0, width;            while (null != (s = br.readLine())) {                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);                    if (!listOfVehicle.contains(map[y][x]) && map[y][x] != '0') {                        listOfVehicle.add(map[y][x]);                    }                    x++;                }                y++;            } } catch (Exception e) {            e.printStackTrace();        }    } public Color getColorOfVehicle (char x) {        char a = '0';        for(int i =0; i<listOfVehicle.size();i++) {            a = listOfVehicle.get(i).toString().charAt(0);            if (a==x) {                return colors[i];            }        }        return null;    } public static void main(String[] args) {        GarageGUI garageGUI = new GarageGUI();    }    private class EventHandler implements ActionListener { public void actionPerformed(ActionEvent e) {            Object source = e.getSource();            if (source != null && source == doButton) {                String myVehicle = vehicleCombo.getSelectedItem().toString();                String myDirection = directionCombo.getSelectedItem().toString();                int myStep = -1;                try{                    myStep = Integer.parseInt(stepField.getText());                } catch (Exception ex){                    myStep = 0;                } System.out.println(myVehicle + " " + myDirection + " " + myStep);                if(myStep > 0 ) {                    System.out.println("do someething");                }                else {                    System.out.println("illegal move");                }            }        } } }

Mapnya adalah sebagai berikut:

c,c,d,d,e
0,0,b,0,0
a,a,b,0,0
0,0,f,f,g
i,0,0,0,g

Hasil outputnya adalah sebagai berikut:

Dari hasil output di atas, output tesebut dapat memindahkan mobil dengan huruf yang diinginkan tapi hanya bisa bergerak ke up dan down atau left dan right, misalnya mobil c hanya bisa ke kanan dan ke kiri sedangkan untuk mobil g hanya bis bergerak ke atas dan ke bawah. Tergantung letak mobil dan area yang dilalui kosong.

Dari hasil hasil output di atas saya belajar tentang cara memberi Combo Box pada GUI dan cara memberi warna pada GUI


ComboBox

Sebuah JComboBox , yang memungkinkan pengguna memilih salah satu dari beberapa pilihan. User dapat memilih dari pilihan yang disediakan oleh user. ComboBox membutuhkan ruang layar kecil, dan dapat diedit mereka (kolom teks) bentuk berguna untuk membiarkan pengguna dengan cepat memilih nilai tanpa membatasi pengguna dengan nilai-nilai yang ditampilkan pilihan. Komponen lain yang dapat satu-of-banyak adalah kelompok menampilkan tombol radio dan daftar . Kelompok tombol radio pada umumnya yang paling mudah bagi pengguna untuk mengerti, tetapi kotak kombo dapat lebih tepat bila ruang terbatas atau lebih dari beberapa pilihan yang tersedia. Daftar ini tidak terlalu menarik, tapi mereka lebih tepat daripada combo kotak ketika jumlah item besar (katakanlah, lebih dari 20) atau ketika memilih beberapa item mungkin berlaku.

Kode berikut, diambil dari ComboBoxDemo.java , menciptakan sebuah kotak kombo diedit dan set it up:

String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" }; String [] = (petStrings "Burung", "Cat", "Anjing", "Rabbit", "Pig");

//Create the combo box, select item at index 4. / / Buat kotak kombo, pilih item pada indeks 4.
//Indices start at 0, so 4 specifies the pig. / / Indeks dimulai dari 0, jadi 4 menentukan babi.
JComboBox petList = new JComboBox(petStrings); JComboBox petList = JComboBox baru (petStrings);
petList.setSelectedIndex(4); petList.setSelectedIndex (4);
petList.addActionListener(this); petList.addActionListener (ini);

Penanganan Acara pada Combo Box

contoh:

 masyarakat kelas ComboBoxDemo ... implements ActionListener { mengimplementasikan ActionListener (
    . . . . . .
        petList.addActionListener(this) { petList.addActionListener (ini) (
    . . . . . .
    public void actionPerformed(ActionEvent e) { void publik actionPerformed (ActionEvent e) (
        JComboBox cb = (JComboBox)e.getSource(); JComboBox cb = (JComboBox) e.getSource ();
        String petName = (String)cb.getSelectedItem(); String petName = (String) cb.getSelectedItem ();
        updateLabel(petName); updateLabel (petName);
    } )
    . . . . . .
} )

addActionListener digunakan agar pc dapat menjalankan apa yang diberikan oleh user.

Color


Untuk memberikan warna dapat menggunakan JColorChooser. Contoh:

ColorChooserDemo public class JPanel meluas ... { (
    public ColorChooserDemo() { publik ColorChooserDemo () (
        super(new BorderLayout()); super (BorderLayout baru ());
        banner = new JLabel("Welcome to the Tutorial Zone!", banner = new JLabel ("Selamat datang di Zona Tutorial!",
                            JLabel.CENTER); JLabel.CENTER);
        banner.setForeground(Color.yellow); banner.setForeground (Color.yellow);
        . . . . . .
        tcc = new JColorChooser(banner.getForeground()); TCC = baru JColorChooser (banner.getForeground ());
        . . . . . .
        add(tcc, BorderLayout.PAGE_END); add (TCC, BorderLayout.PAGE_END);
    } )

Sebuah Pemilih warna dasar, seperti yang digunakan dalam program contoh, cukup untuk banyak program. Namun, API pemilih warna memungkinkan Anda untuk menyesuaikan dengan pemilih warna dengan menyediakan itu dengan panel preview desain sendiri, dengan menambahkan Pemilih Anda sendiri panel untuk itu, atau dengan menghapus panel pemilih dari pemilih yang ada warna. Selain itu, JColorChooser kelas menyediakan dua metode yang membuatnya mudah untuk menggunakan pemilih warna dalam sebuah dialog.

Membuat Custom Panel Pemilih

Pemilih warna default menyediakan tiga panel Pemilih:

  • Swatches — for choosing a color from a collection of swatches. Potongan-potongan – untuk memilih warna dari koleksi potongan-potongan.
  • HSB — for choosing a color using the Hue-Saturation-Brightness color model. HSB – untuk memilih warna menggunakan Kecerahan Saturasi warna-model-Hue.
  • RGB — for choosing a color using the Red-Green-Blue color model. RGB – untuk memilih warna dengan menggunakan warna Biru Hijau model-Red.

User dapat memperpanjang pemilih warna default dengan menambahkan panel Pemilih desain sendiri dengan addChooserPanel , atau Anda dapat membatasi dengan menghapus panel pemilih dengan removeChooserPanel .

Demikian pelajaran pada pertemuan tersebut. 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: