package aplikasihoteladitya;
import javax.swing.*;
import java.awt.*;
public class AplikasiHotelAditya extends JFrame {
private JTextField txtNama;
private JTextField txtLama;
private JTextField txtTotal;
private JComboBox<String> cmbKamar;
private JButton btnHitung;
private JButton btnReset;
public AplikasiHotelAditya() {
setTitle("Aplikasi Mini Hotel");
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
// Panel utama
JPanel panel = new JPanel(new GridBagLayout());
panel.setBorder(BorderFactory.createEmptyBorder(25, 30, 25, 30));
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(8, 8, 8, 8);
gbc.fill = GridBagConstraints.HORIZONTAL;
// Judul
JLabel judul = new JLabel("APLIKASI MINI HOTEL");
judul.setFont(new Font("Arial", Font.BOLD, 22));
judul.setHorizontalAlignment(SwingConstants.CENTER);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
panel.add(judul, gbc);
// Nama Tamu
JLabel lblNama = new JLabel("Nama Tamu");
lblNama.setFont(new Font("Arial", Font.BOLD, 14));
txtNama = new JTextField();
txtNama.setFont(new Font("Arial", Font.PLAIN, 14));
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridx = 0;
panel.add(lblNama, gbc);
gbc.gridx = 1;
panel.add(txtNama, gbc);
// Tipe Kamar
JLabel lblKamar = new JLabel("Tipe Kamar");
lblKamar.setFont(new Font("Arial", Font.BOLD, 14));
cmbKamar = new JComboBox<>(new String[]{
"Standard - Rp300000",
"Deluxe - Rp500000",
"Suite - Rp750000"
});
cmbKamar.setFont(new Font("Arial", Font.PLAIN, 14));
gbc.gridy = 2;
gbc.gridx = 0;
panel.add(lblKamar, gbc);
gbc.gridx = 1;
panel.add(cmbKamar, gbc);
// Lama Menginap
JLabel lblLama = new JLabel("Lama Menginap");
lblLama.setFont(new Font("Arial", Font.BOLD, 14));
txtLama = new JTextField();
txtLama.setFont(new Font("Arial", Font.PLAIN, 14));
gbc.gridy = 3;
gbc.gridx = 0;
panel.add(lblLama, gbc);
gbc.gridx = 1;
panel.add(txtLama, gbc);
// Total Tagihan
JLabel lblTotal = new JLabel("Total Tagihan");
lblTotal.setFont(new Font("Arial", Font.BOLD, 14));
txtTotal = new JTextField();
txtTotal.setFont(new Font("Arial", Font.BOLD, 16));
txtTotal.setEditable(false);
gbc.gridy = 4;
gbc.gridx = 0;
panel.add(lblTotal, gbc);
gbc.gridx = 1;
panel.add(txtTotal, gbc);
// Tombol
btnHitung = new JButton("HITUNG");
btnHitung.setFont(new Font("Arial", Font.BOLD, 14));
btnReset = new JButton("RESET");
btnReset.setFont(new Font("Arial", Font.BOLD, 14));
gbc.gridy = 5;
gbc.gridx = 0;
panel.add(btnHitung, gbc);
gbc.gridx = 1;
panel.add(btnReset, gbc);
add(panel);
// Fungsi tombol Hitung
btnHitung.addActionListener(e -> {
try {
String nama = txtNama.getText().trim();
if (nama.isEmpty()) {
JOptionPane.showMessageDialog(
this,
"Nama tamu belum diisi!",
"Peringatan",
JOptionPane.WARNING_MESSAGE
);
return;
}
int lama = Integer.parseInt(txtLama.getText());
if (lama <= 0) {
JOptionPane.showMessageDialog(
this,
"Lama menginap harus lebih dari 0!",
"Peringatan",
JOptionPane.WARNING_MESSAGE
);
return;
}
int harga;
if (cmbKamar.getSelectedIndex() == 0) {
harga = 300000;
} else if (cmbKamar.getSelectedIndex() == 1) {
harga = 500000;
} else {
harga = 750000;
}
int total = harga * lama;
txtTotal.setText("Rp" + total);
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(
this,
"Lama menginap harus berupa angka!",
"Error",
JOptionPane.ERROR_MESSAGE
);
}
});
// Fungsi tombol Reset
btnReset.addActionListener(e -> {
txtNama.setText("");
txtLama.setText("");
txtTotal.setText("");
cmbKamar.setSelectedIndex(0);
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
AplikasiHotelAditya aplikasi =
new AplikasiHotelAditya();
aplikasi.setVisible(true);
});
}
}
