Untuk membuat program tersebut diperlukan 2 kelas/java yaitu
- DemoTombol
- PanelPesan
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class DemoTombol extends JFrame {
// Menciptakan panel untuk menampilkan pesan
protected PanelPesan panelPesan
= new PanelPesan("JAVA itu Tangguh!");
// Mendeklarasikan dua tombol untuk menggerakkan pesan ke kiri dan ke kanan
private JButton jbtKiri = new JButton("<=");
private JButton jbtKanan = new JButton("=>");
public static void main(String[] args) {
DemoTombol frame = new DemoTombol();
frame.setTitle("DemoTombol");
frame.setSize(250, 100);
frame.setLocationRelativeTo(null); // Pusat frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public DemoTombol() {
// Menetapkan warna latar belakang untuk panelPesan
panelPesan.setBackground(Color.white);
// Menciptakan Panel jpTombol untuk memuat dua tombol "<=” dan “right =>"
JPanel jpTombol = new JPanel();
jpTombol.add(jbtKiri);
jpTombol.add(jbtKanan);
// Menetapkan papankunci mnemonik
jbtKiri.setMnemonic('I');
jbtKanan.setMnemonic('A');
// Menetapkan ikon dan menghapus teks
jbtKiri.setIcon(new ImageIcon("Gambar/kiri.gif"));
jbtKanan.setIcon(new ImageIcon("Gambar/kanan.gif"));
jbtKiri.setText(null);
jbtKanan.setText(null);
// Menetapkan perangkat tool tip text pada tombol
jbtKiri.setToolTipText("Menggerakkan pesan ke kiri");
jbtKanan.setToolTipText("Menggerakkan pesan ke kanan");
// Menampilkan panel di dalam frame
setLayout(new BorderLayout());
add(panelPesan, BorderLayout.CENTER);
add(jpTombol, BorderLayout.SOUTH);
// Meregistrasi listener dengan tombol
jbtKiri.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panelPesan.geserKiri();
}
});
jbtKanan.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panelPesan.geserKanan();
}
});
}
}
PanelPesan.java
import java.awt.FontMetrics;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
public class PanelPesan extends JPanel{
/** Pesan yang akan ditampilkan*/
private String pesan = "JAVA itu Tangguh!";
/** Koordinat-x dimana pesan ditampilkan */
private int koordinatX = 20;
/** Koordinat-y dimana pesan ditampilkan */
private int koordinatY = 20;
/** Mengindikasikan apakah pesan ditampilkan di tengah atau tidak */
private boolean ditengah;
/** Interval untuk menggerakkan pesan secara horisontal dan
secara vertikal */
private int interval = 10;
/** Menciptakan properti-properti default */
public PanelPesan(){
}
/** Menciptakan suatu panel pesan dengan pesan tertentu */
public PanelPesan(String pesan){
this.pesan = pesan;
}
/** Mengembalikan pesan */
public String dapatPesan() {
return pesan;
}
/** Menetapkan suatu pesan baru */
public void tetapkanPesan(String pesan) {
this.pesan = pesan;
repaint();
}
/** Mengembalikan koordinatX */
public int dapatKoordinatX() {
return koordinatX;
}
/** Menetapkan suatu koordinatX baru */
public void tetapkanKoordinatX(int x) {
this.koordinatX = x;
repaint();
}
/** Mengembalikan koordinatY */
public int dapatKoordinatY() {
return koordinatY;
}
/** Menetapkan suatu koordinatY baru */
public void tetapkanKoordinatY(int y) {
this.koordinatY = y;
repaint();
}
/** Mengembalikan properti ditengah */
public boolean apaDitengah() {
return ditengah;
}
/** menetapkan nilai ditengah yang baru */
public void tetapkanDitengah(boolean ditengah) {
this.ditengah = ditengah;
repaint();
}
/** Mengembalikan interval */
public int dapatInterval() {
return interval;
}
/** Menetapkan suatu interval baru */
public void tetapkanInterval(int interval) {
this.interval = interval;
repaint();
}
/** Menampilkan pesan */
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (ditengah){
// Mendapatkan metrik font untuk font saat ini
FontMetrics fm = g.getFontMetrics();
// Mencari lokasi tengah untuk menampilkan
int stringWidth = fm.stringWidth(pesan);
int stringAscent = fm.getAscent();
// Mencari posisi karakter paling-kiri dalam baseline
koordinatX = getWidth() / 2 - stringWidth / 2;
koordinatY = getHeight() / 2 + stringAscent / 2;
}
g.drawString(pesan, koordinatX, koordinatY);
}
/** Menggerakkan pesan ke kiri */
public void geserKiri() {
koordinatX -= interval;
repaint();
}
/** Menggerakkan pesan ke kanan */
public void geserKanan() {
koordinatX += interval;
repaint();
}
/** Menggerakkan pesan ke atas */
public void geserAtas() {
koordinatY -= interval;
repaint();
}
/** Menggerakkan pesan ke bawah */
public void geserBawah() {
koordinatY += interval;
repaint();
}
/** Mengoverride metode preferredSize */
public Dimension getPreferredSize() {
return new Dimension(200, 30);
}
}
Hasilnya:
0 komentar:
Posting Komentar