Tạo form như mẫu sau:
From functions
Yêu cầu:
- Viết chức năng login
- Viết các chức năng cho từng radio button
Bước 1. Tạo project
– Khởi động NetBean IDE – File -> New Project -> Tab Categories chọn Java -> Tab Project chọn JavaApplication -> Đặt tên cho project -> Finish – Trong project mới tạo [Project JavaSwing], mình tạo một package là vn.edu.uneti.lab12
Bước 2. Tạo các form
2.1. Tạo form đăng nhập [login form].
private static String USER = "Chloe"; private static String PASS = "test1";
– Tiếp theo nút Cancel, bạn sẽ close form và thoát ứng dụng. Bạn sử dụng phương thức Dispose[].private void btCancelActionPerformed[java.awt.event.ActionEvent evt] { this.dispose[]; }
– Quan trọng nhất là nút Submit để đăng nhập vào chương trình. Bạn cần kiểm tra User, Password có chính xác hay không để quyết định làm gì tiếp theo. Nếu User, Pass đúng bạn cho người dùng sử dụng các chức năng tức là bật ra form functions và ẩn form login đi. Bạn có thể tham khảo đoạn code dưới đây.private void btSubmitActionPerformed[java.awt.event.ActionEvent evt] {//GEN-FIRST:event_btSubmitActionPerformed // Kiểm tra xem các text field có để trống không if [tbUser.getText[].equals["Type your Username here!"] || tbPass.getText[].equals[""]] { //Hiển thị thông báo bằng Message Dialog JOptionPane.showMessageDialog[null, "Bạn chưa nhập UserName hoặc Password!", "Lỗi đăng nhập", JOptionPane.OK_OPTION]; } // So sánh user, pass người dùng nhập vào và dữ liệu định sẵn if [tbUser.getText[].equals[USER] && tbPass.getText[].equals[PASS]] { JOptionPane.showMessageDialog[null, "Logged", "Informations", JOptionPane.INFORMATION_MESSAGE]; GlobalVariable.l.setVisible[false];// Ẩn form login GlobalVariable.fun.show[];// Hiển thị form lựa chọn function } else { JOptionPane.showMessageDialog[null, "Log failure", "Informations", JOptionPane.OK_OPTION]; tbUser.requestFocus[]; }
– Ở đây mình có sử dụng 1 Abstract Class GlobalVariable mục đích là tạo ra các biến Global dùng chung cho toàn bộ project.package vn.edu.uneti.lab12; public abstract class GlobalVariable { public static login l = new login[]; public static functions fun =new functions[];
}
– Ok bạn đã có 1 form login tương đối, ngoài ra bạn có thể sử dụng một số config khác để config các điều kiện khác như:
- Chỉ cho nhập k kí tự vào các field.
- Thay đổi kiểu hiển thị của các password.
- Các hàm validate dữ liệu từ người dùng.
- ….
2.2. Tạo form functions
– Lưu ý:
- Các radio button bạn phải nhóm vào 1 group với mục đích chỉ cho chọn 1 radio button tại 1 thời điểm.
- Cần config cho 1 radio button nào đó được chọn mặc định [ Mục đích đảm bảo tính logic.].
– Nút Exit bạn có thể code như sau:
private void btExitActionPerformed[java.awt.event.ActionEvent evt] {
this.dispose[];
GlobalVariable.l.setVisible[true];
}
– Nút Display bạn có thể tham khảo đoạn code dưới:
private void btDisplayActionPerformed[java.awt.event.ActionEvent evt] { if [rbg.getSelection[] == btr1.getModel[]] { GlobalVariable.fun.setVisible[false]; pbt1 pt = new pbt1[]; pt.show[]; } if [rbg.getSelection[] == btr2.getModel[]] { GlobalVariable.fun.setVisible[false]; ptb2 pt = new ptb2[]; pt.show[]; } if [rbg.getSelection[] == btr3.getModel[]] { GlobalVariable.fun.setVisible[false]; Prime pt = new Prime[]; pt.show[]; } }
2.3. Giải phương trình bậc nhất.
private void jButton1ActionPerformed[java.awt.event.ActionEvent evt] {//GEN-FIRST:event_jButton1ActionPerformed this.dispose[]; GlobalVariable.fun.setVisible[true]; }
– Code nút Solve:private void jButton2ActionPerformed[java.awt.event.ActionEvent evt] { if [tbA.getText[].equals[""] || tbB.getText[].equals[""]] { JOptionPane.showMessageDialog[null, "Bạn phải nhập dữ liệu cho 2 trường a, b.", "Error", JOptionPane.OK_OPTION]; } else { float a = 0, b = 0; try { a = Float.parseFloat[tbA.getText[]]; b = Float.parseFloat[tbB.getText[]]; if [b != 0] { tbRe.setText["" + [-a / b]]; } else { tbRe.setText["Phương trình vô số nghiệm trên R."]; } } catch [Exception e] { JOptionPane.showMessageDialog[null, "Dữ liệu không đúng.", "Error", JOptionPane.OK_OPTION]; tbA.requestFocus[]; } } }
– Ngoài ra các bạn có thể handle event người dùng click vào biểu tưởng close của form như sau:private void formWindowClosing[java.awt.event.WindowEvent evt] { int check=JOptionPane.showConfirmDialog[this,"Are you sure exit?", "Confirm", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE]; if[check ==JOptionPane.YES_OPTION]{ System.exit[1]; System.out.println[evt.toString[]]; } }
2.4. Giải phương trình bậc 2
private void jButton1ActionPerformed[java.awt.event.ActionEvent evt] { this.dispose[]; GlobalVariable.fun.setVisible[true]; }
– Code nut Solve:private void jButton2ActionPerformed[java.awt.event.ActionEvent evt] { if [tbA.getText[].equals[""] || tbB.getText[].equals[""] || tbC.getText[].equals[""]] { JOptionPane.showMessageDialog[null, "Bạn phải nhập dữ liệu cho 3 trường a, b, c.", "Error", JOptionPane.OK_OPTION]; tbA.requestFocus[]; } else { float a = 0, b = 0, c = 0; try { a = Float.parseFloat[tbA.getText[]]; b = Float.parseFloat[tbB.getText[]]; c = Float.parseFloat[tbC.getText[]]; if [a == 0] { if [b == 0] { if [c == 0] { tbRe.setText["Phương trình vô nghiệm trên R."]; return; } else { tbRe.setText["Phương trình vô nghiệm trên R."]; } } else { if [c == 0] { tbRe.setText["Phương trình có nghiệm x=0."]; return; } else { tbRe.setText["Phương trình có nghiệm x=" + [-c / b]]; return; } } } else { float delta = b * b - 4 * a * c; if [delta < 0] //a khac ko { tbRe.setText["Phương trình vô nghiệm trên R."]; return; } else if [delta == 0] { tbRe.setText["Phương trình có nghiệm kép \nx1= x2= " + [-b / [2 * a]]]; return; } else { tbRe.setText["Phương trình có 2 nghiệm.\nx1= " + [[-b + Math.sqrt[delta]] / [2 * a]] + "\nx2= " + [[-b - Math.sqrt[delta]] / [2 * a]]]; return; } } } catch [Exception e] { JOptionPane.showMessageDialog[null, "Dữ liệu không đúng.", "Error", JOptionPane.OK_OPTION]; tbA.requestFocus[]; } } }
2.5. Kiểm tra số nguyên tố.
private void btCheckActionPerformed[java.awt.event.ActionEvent evt] { if [tbN.getText[].equals[""]] { JOptionPane.showMessageDialog[null, "Bạn chưa nhập dữ liệu.", "Error", JOptionPane.OK_OPTION]; } else { try { int n = Integer.parseInt[tbN.getText[]]; System.out.println[n]; if [n