File : BangunPanel.java
package bangunpanel;
import java.awt.*;
import javax.swing.JPanel;
public class BangunPanel extends JPanel {
// Mendefinisikan konstanta-konstanta
public static final int GARIS = 1;
public static final int PERSEGIPANJANG = 2;
public static final int BUNDAR_PERSEGIPANJANG = 3;
public static final int OVAL = 4;
private int tipe = 1;
private boolean terisi = false;
/** Menciptakan BangunPanel default */
public BangunPanel() {
}
/** Menciptakan suatu BangunPanel dengan tipe tertentu */
public BangunPanel(int tipe) {
this.tipe = tipe;
}
/** Menciptakan suatu BangunPanel dengan tipe dan terisi tertentu */
public BangunPanel(int tipe, boolean terisi) {
this.tipe = tipe;
this.terisi = terisi;
}
/** Menggambar suatu bangun pada panel */
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// Mendapatkan ukuran sesuai untuk bangun
int lebar = getWidth();
int tinggi = getHeight();
switch (tipe){
case GARIS: // Menampilkan dua garis silang
g.setColor(Color.BLACK);
g.drawLine(10, 10, lebar - 10, tinggi - 10);
g.drawLine(lebar - 10, 10, 10, tinggi - 10);
break;
case PERSEGIPANJANG: // Menampilkan suatu persegi-panjang
g.setColor(Color.BLUE);
if (terisi)
g.fillRect((int)(0.1 * lebar), (int)(0.1 * tinggi),
(int)(0.8 * lebar), (int)(0.8 * tinggi));
else
g.drawRect((int)(0.1 * lebar), (int)(0.1 * tinggi),
(int)(0.8 * lebar), (int)(0.8 * tinggi));
break;
case BUNDAR_PERSEGIPANJANG: // Menampilkan suatu persegi-panjang ujung bundar
g.setColor(Color.RED);
if (terisi)
g.fillRoundRect((int)(0.1 * lebar), (int)(0.1 * tinggi),
(int)(0.8 * lebar), (int)(0.8 * tinggi), 20, 20);
else
g.drawRoundRect((int)(0.1 * lebar), (int)(0.1 * tinggi),
(int)(0.8 * lebar), (int)(0.8 * tinggi), 20, 20);
break;
case OVAL: // Menampilkan suatu oval
g.setColor(Color.BLACK);
if (terisi)
g.fillOval((int)(0.1 * lebar), (int)(0.1 * tinggi),
(int)(0.8 * lebar), (int)(0.8 * tinggi));
else
g.drawOval((int)(0.1 * lebar), (int)(0.1 * tinggi),
(int)(0.8 * lebar), (int)(0.8 * tinggi));
}
}
/** Menetapkan suatu tipe bangun baru */
public void tetapkanTipe(int tipe) {
this.tipe = tipe;
repaint();
}
/** Mengembalikan tipe bangun */
public int dapatTipe() {
return tipe;
}
/** Menetapkan suatu properti terisi baru */
public void tetapkanTerisi(boolean terisi) {
this.terisi = terisi;
repaint();
}
/** Memeriksa apakah bangun terisi atau tidak */
public boolean apaTerisi() {
return terisi;
}
/** Menentukan ukuran yang diinginkan */
public Dimension dapatUkuranDiinginkan() {
return new Dimension(80, 80);
}
}
File : UjiBangunPanel.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package bangunpanel;
import java.awt.*;
import javax.swing.*;
public class UjiBangunPanel extends JFrame {
public UjiBangunPanel() {
setLayout(new GridLayout(2, 3, 5, 5));
add(new BangunPanel(BangunPanel.GARIS));
add(new BangunPanel(BangunPanel.PERSEGIPANJANG));
add(new BangunPanel(BangunPanel.BUNDAR_PERSEGIPANJANG));
add(new BangunPanel(BangunPanel.OVAL));
add(new BangunPanel(BangunPanel.PERSEGIPANJANG, true));
add(new BangunPanel(BangunPanel.BUNDAR_PERSEGIPANJANG, true));
}
public static void main(String[] args) {
UjiBangunPanel frame = new UjiBangunPanel();
frame.setSize(400, 200);
frame.setTitle("UjiBangunPanel");
frame.setLocationRelativeTo(null); // Pusat frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Tidak ada komentar:
Posting Komentar