Bài tập thực hành Java 1 – Module 8
Trang 25/39
Module 8. Graphic User Interface
Nội dung kiến thức thực hành:
+ Bố trí các thành phần trong giao diện
+ Sử dụng một số đối tượng giao diện: JButton, JLabel, JTextField
+ Điều khiển sự kiện
Bài 1.
Viết lớp InstantMessageFrame, lớp này thừa kế lớp JFrame. Yêu cầu viết một constructor cho
lớp này, constructor có một tham số kiểu String biểu diễn tiêu đề của JFrame. Trong constructor yêu
cầu:
+ Tạo tiêu đề cho JFrame
+ Cho kích thước JFrame là 220, 450
+ Cho hiện JFrame
Viết hàm main trong lớp InstantMessageFrame, trong hàm main khởi tạo đối tượng
InstantMessageFrame với tiêu đề là “My IM Program”.
Biên dịch và chạy chương trình. Sau đó lần lượt thêm vào các lệnh sau và thực hiện lại:
- setDefaultCloseOperation(EXIT_ON_CLOSE)
thật sự thoát chương trình khi người dùng đóng frame
- setResizable(false)
không cho phép thay đổi kích thước frame.
- Dimension d = getToolkit().getScreenSize();
int wLocate = (int)(d.getWidth()/2-this.getWidth()/2);
int hLocate = (int)(d.getHeight()/2-this.getHeight()/2);
setLocation(wLocate, hLocate);
cho frame xuất hiện giữa màn hình.
Bài 2.
Thiết kế giao diện như sau:
Bài 7.
Viết chương trình tính bình phương của một số.
Bài tập thực hành Java 1 – Module 8
Trang 27/39
Thiết kế giao diện gồm một JTextField để nhập số, hai JButton để tính và đóng chương trình,
một JLabel để hiện kết quả. Khi người dùng nhấn nút hoặc nhấn Enter trên JTextField thì chương trình
xuất kết quả. Yêu cầu sử dụng cấu trúc try-catch để bắt lỗi nhập liệu.
Bài 8.
Thiết kế giao diện như sau:
Tham khảo cách làm sau:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class frmLogin extends JFrame implements ActionListener {
private JTextField txtUserName;
private JPasswordField txtPSW;
private JButton btnLogin, btnCancel;
public frmLogin() {
super("Log on Program");
JPanel pTop = new JPanel(new GridLayout(1,1));
JPanel pCen = new JPanel(new BorderLayout());
JPanel pBot = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5));
add(pTop, BorderLayout.NORTH);
add(pCen, BorderLayout.CENTER);
add(pBot, BorderLayout.SOUTH);
pTop.setBorder(BorderFactory.createLineBorder(Color.red));
pM.add(b);
pCen.add(pM, BorderLayout.CENTER);
JLabel lblIMG = new JLabel(new ImageIcon ("Images/AboutImage.gif"));
pCen.add(lblIMG, BorderLayout.WEST);
lblIMG.setBorder(BorderFactory.createLineBorder(Color.red));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(500, 250);
setResizable(false);
Dimension d = getToolkit().getScreenSize();
int wLocate = (int)(d.getWidth()/2-this.getWidth()/2);
int hLocate = (int)(d.getHeight()/2-this.getHeight()/2);
setLocation(wLocate, hLocate);
setVisible(true);
}
//==============================================================
public void actionPerformed(ActionEvent e) {
Object o=e.getSource();
if(o.equals(btnCancel))
{
exitProgram();
}
else if(o.equals(btnLogin))
{
login();
}
// (tu viet)
this.dispose(); //Dong giao dien login
}
//==============================================================
private void exitProgram() {
int selValue = JOptionPane.showConfirmDialog(this, "Are you sure to exit program?",
"Confirmation", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(selValue == JOptionPane.YES_OPTION)
System.exit(0);
}
//==============================================================
public static void main (String[] args){new frmLogin();}
}
Bài tập thực hành Java 1 – Module 9
Trang 30/39
Module 9.
Nội dung kiến thức thực hành:
+ JCheckBox, JRadioButton
+ JComboBox, Jlist
+ Menu
Bài 1.
Thiết kế giao diện như sau:
Hoạt động: Chương trình cho phép thay đổi định dạng chữ trong ô JTextField khi nhấn chọn
checkbox tương ứng.
Bài 2.
Thiết kế giao diện như sau:
Bài 7.
Thiết kế giao diện như sau: giao diện gồm 2 JButton và 1 JList có thanh cuộn.
Hoạt động: Chương trình cho phép thêm và xóa một mục trong JList như sau:
+ Khi người dùng nhấn nút “Add Philosopher” thì chương trình hiện ra một cửa sổ cho nhập
tên như hình bên dưới, khi nhấn nút OK thì thêm vào JList, chú ý trường hợp ô nhập tên để trống.
Bài tập thực hành Java 1 – Module 9
Trang 32/39
+ Khi người dùng nhấn nút “Remove Selected Philosopher” thì chương trình sẽ xóa mục
đang chọn trong JList, trước khi xóa phải hỏi xác nhận lại, nếu không chọn mục nào để xóa thì phải
thông báo.
Thêm vào chương trình menu.
Bài 8.
Thiết kế giao diện như hình sau:
Yêu cầu xử lý:
+ Khi nhấn nút “Add Item” thì thêm nội dung ô nhập vào JList, cảnh báo người dùng trường
hợp để trống ô nhập hoặc nhập trùng dữ liệu đã có.
+ Khi nhấn nút “Remove Item” thì cho phép xóa các dòng đang chọn trong JList, trước khi xóa
phải hỏi xác nhận lại, cảnh báo người dùng trường hợp không chọn mà xóa.
+ Khi nhấn chọn một dòng trên JList thì hiện nội dung dòng đó lên ô nhập liệu.
+ Khi nhấn nút “Edit Item” thì cho phép sửa nội dung dòng đang chọn thành nội dung mới
trong ô nhập liệu.
Bài 9.
(i) Viết lớp HinhChuNhat để tính chu vi và diện tích, trong đó có hàm toString() trả về chuỗi chứa
các thông tin là chiều dài, chiều rộng, chu vi, diện tích (mỗi cột cách nhau bởi các khoảng
trắng).
(ii) Thiết kế giao diện như hình sau:
Bài tập thực hành Java 1 – Module 9
+ Khi chọn 1 dòng trên JList thì hiện thông tin dòng đó lên các ô nhập liệu.
+ Nút “Thoát”: đóng chương trình.
Bài tập thực hành Java 1 – Module 10
Trang 35/39
Module 10.
Nội dung kiến thức thực hành:
+ JSlider
+ JSplitPane
+ JTable
+ JTree
Bài 1.
Viết chương trình đổi màu panel dùng JSlider như hình:
Bài 2.
Thiết kế giao diện như hình bên dưới:
+ Khi người dùng nhấn nút “Add Philosopher” thì chương trình lần lượt hiện ra các cửa sổ cho
nhập vào First Name, Last Name và Years, sau đó đưa các thông tin này lên JTable
+ Khi người dùng nhấn nút “Remove Selected Philosopher” thì chương trình sẽ xóa mục
đang chọn trong JTable, nếu không chọn mục nào để xóa thì phải thông báo, trước khi xóa phải hỏi xác
nhận lại.
Bài tập thực hành Java 1 – Module 10
Trang 36/39
Bài 3.
i. Viết lớp NhanVien với các yêu cầu sau:
Thuộc tính: mã nhân viên (String), phân xưởng (String), số sản phẩm (int).
Các hàm khởi tạo.
Các hàm get/set.
JTable. Chú ý không được sửa khi:
- Không có đủ dữ liệu.
- Số SP không phải là số.
- Trùng mã nhân viên.
Bài 4.
(i) Viết lớp SinhVien với yêu cầu sau:
Thuộc tính: mã sinh viên (String), họ tên (String), mã lớp (String), điểm môn 1 (double), điểm
môn 2 (double).
Các hàm khởi tạo.
Các hàm get/set.
Hàm DiemTrungBinh(): trả về điểm trung bình của 2 môn học.
Hàm KetQua(): trả về “Đậu” khi điểm trung bình >=5, ngược lại là “Rớt”.
Hàm toString(): trả về mã sinh viên.
(ii) Thiết kế giao diện như hình bên dưới
Giao diện cho nhập mã sinh viên, họ tên, chọn mã lớp, nhập điểm môn 1, môn 2.
Yêu cầu xử lý:
+ Nút “Kết quả”: xuất ra điểm trung bình và kết quả của sinh viên đang nhập (xem hình). Chú ý
ô nhập Điểm môn 1 và môn 2 phải là số.
+ Nút “Thêm”: thêm một sinh viên vào table với các cột như hình. Chú ý không được thêm khi:
- Không nhập đủ dữ liệu.
- Điểm môn 1 và môn 2 không phải là số.
Bài tập thực hành Java 1 – Module 10
Trang 38/39
- Trùng mã sinh viên.
+ Nút “Xóa”: xóa một sinh viên đang chọn trên table. Chú ý phải hỏi trước khi xóa và không
được xóa khi chưa chọn dòng nào.
+ Khi chọn 1 dòng trên table thì hiện thông tin sinh viên đó lên các ô nhập liệu (xem hình).
Bài 5.
Thiết kế giao diện và thực hiện như hình bên dưới: