Giải phương trình bậc 2 Java Swing kéo thả
Tạo form như mẫu sau: Show
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).
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– 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.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 2private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); GlobalVariable.fun.setVisible(true); } 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 <= 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 |