Giải phương trình bậc 1 Java Swing
Show
Tạo form như mẫu sau:
From functions Yêu cầu:
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 form2.1. Tạo form đăng nhập (login form).– Right Click vào Package -> New -> JFrame Form -> Class Name bạn gõ tên form, ở đây là login– Bạn kéo các thành phần (components) từ cửa sổ Palette phía bên phải IDE vào form và bố trí hợp lí như yêu cầu của đề bài. Phần này dễ và nhiều thao tác nên mình sẽ không hướng dẫn. – Trong cửa sổ properties, bạn chọn tab Code và tiến hành đặt tên cho các components bạn đã kéo vào from. – Phần quan trọng nhất là code ở phần này. Bạn chuyển từ chết độ Design sang Code bằng các Double Click vào các components hoặc chuyển sang tab Source.
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ư:
2.2. Tạo form functions– Bạn tạo ra một JFrame Form mới như 2.1 và đặt tên là functions. – Bạn kéo thả các components như hình vẽ đề bài yêu cầu.– Lưu ý:
– Nút Exit bạn có thể code như sau: 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.– Bạn tạo form như hình vẽ trên. – Code nút Close: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– Bạn tạo form theo mẫu trên. – Code nút Close: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ố.– Bạn thiết thế form như hình trên. – Code nút Check: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 <= 0) { JOptionPane.showMessageDialog(null, "Bạn phải nhập vào một số nguyên dương.", "Error", JOptionPane.OK_OPTION); return; } else { boolean f = false; if (n == 1) { JOptionPane.showMessageDialog(null, tbN.getText() + " không phải là số nguyên tố.", "Informations", JOptionPane.INFORMATION_MESSAGE); return; } else if (n == 2 || n == 3) { JOptionPane.showMessageDialog(null, tbN.getText() + " là số nguyên tố.", "Informations", JOptionPane.INFORMATION_MESSAGE); return; } else { if(Pr(n)) JOptionPane.showMessageDialog(null, tbN.getText() + " là số nguyên tố.", "Informations", JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(null, tbN.getText() + " không phải là số nguyên tố.", "Informations", JOptionPane.INFORMATION_MESSAGE); } } } catch (Exception e) { System.out.println(e.toString()); JOptionPane.showMessageDialog(null, "Bạn phải nhập vào một số nguyên dương.", "Error", JOptionPane.OK_OPTION); } } } – Ở đây mình sử dụng hàm kiểm tra số nguyên tố.public static boolean Pr(int n){ if(n<=1) return false; if (n==2||n==3) return true; for (int i = 2; i <= (int)Math.sqrt(n); i++) { if(n%i==0) return false; } return true; } 2.6. Kiểm tra số hoàn hảo.– Các bạn có thể tự code và design phần này. – Khái niệm số hoàn hảo rất đơn giản, bạn có thể tìm kiếm trên mạng. Nhưng có thể hiểu một cách đơn giản:”Số hoàn hảo có tổng các ước bằng chính nó.”. – Bạn có thể sử dụng đoạn code bên dưới để có được hình ảnh các components có tính khả chuyển cao hơn. Tức là các component này sẽ gần với hình dạng của hệ điều hành nhất. Trong form login.java bạn sửa hàm main thành: public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details seehttp://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } // try { /* Create and display the form */ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException ex) { Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex); } catch (InstantiationException ex) { Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex); } GlobalVariable.l.show(); }Toàn bộ code bạn có thể download tại:Click here |