Trong ví dụ này Tôi sẽ cung cấp 2 class.
Class 1 tên là PTB2UI dùng để thiết kế giao diện
class 2 tên là PTB2Engine dùng để giải phương trình bậc 2, có 3 thông số được truyền vào là a,b,c lấy từ giao diện
Ví dụ này có kiểm tra tính hợp lệ của dữ liệu nhập vào, các bạn xem các dòng lệnh try…catch
Tôi không có giải thích nhiều về code nữa, vì đã giải thích trong các bài giảng rồi, hi vọng các em cố gắng đọc hiểu. Có rất nhiều cách làm!
===========================================================================
class PTB2UI
===========================================================================
import java.awt.*;
import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class PTB2UI extends JFrame { private static final long serialVersionUID = 1L; public PTB2UI(String title) { setTitle(title); } public void doShow() { setSize(400, 300); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); addControl(); setResizable(false); setVisible(true); } public void addControl() { JPanel pnBorder=new JPanel(); pnBorder.setLayout(new BorderLayout()); JPanel pnNorth=new JPanel(); JLabel lblTitle=new JLabel(“Giải phương trình bậc 2”); pnNorth.add(lblTitle); pnBorder.add(pnNorth,BorderLayout.NORTH); lblTitle.setForeground(Color.BLUE); Font ft=new Font(“arial”, Font.BOLD, 25); lblTitle.setFont(ft); JPanel pnSouth=new JPanel(); JButton btnGiai=new JButton(“Giải”); JButton btnXoa=new JButton(“Xóa”); JButton btnThoat=new JButton(“Thoát”); pnSouth.add(btnGiai); pnSouth.add(btnXoa); pnSouth.add(btnThoat); pnBorder.add(pnSouth,BorderLayout.SOUTH); pnSouth.setBackground(Color.LIGHT_GRAY); Border southborder =BorderFactory.createLineBorder(Color.RED); TitledBorder southTitleBorder= new TitledBorder(southborder, “Chọn tác vụ”); pnSouth.setBorder(southTitleBorder); JPanel pnCenter=new JPanel(); pnCenter.setLayout(new BoxLayout(pnCenter, BoxLayout.Y_AXIS)); pnBorder.add(pnCenter,BorderLayout.CENTER); Border centerborder =BorderFactory.createLineBorder(Color.RED); TitledBorder centerTitleBorder= new TitledBorder(centerborder, “nhập a – b- c:”); pnCenter.setBorder(centerTitleBorder); JPanel pna=new JPanel(); JLabel lbla=new JLabel(“nhập a:”); final JTextField txta=new JTextField(15); pna.add(lbla); pna.add(txta); pnCenter.add(pna); JPanel pnb=new JPanel(); JLabel lblb=new JLabel(“nhập b:”); final JTextField txtb=new JTextField(15); pnb.add(lblb); pnb.add(txtb); pnCenter.add(pnb); JPanel pnc=new JPanel(); JLabel lblc=new JLabel(“nhập c:”); final JTextField txtc=new JTextField(15); pnc.add(lblc); pnc.add(txtc); pnCenter.add(pnc); JPanel pnkq=new JPanel(); JLabel lblkq=new JLabel(“kết quả nè:”); final JTextField txtkq=new JTextField(15); pnkq.add(lblkq); pnkq.add(txtkq); pnCenter.add(pnkq); lbla.setPreferredSize(lblkq.getPreferredSize()); lblb.setPreferredSize(lblkq.getPreferredSize()); lblc.setPreferredSize(lblkq.getPreferredSize()); btnThoat.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int ret=JOptionPane.showConfirmDialog(null, “Muốn thoát hả?”, “Thoát”, JOptionPane.YES_NO_OPTION); if(ret==JOptionPane.YES_OPTION) System.exit(0); } }); btnXoa.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { txtb.setText(“”); txtc.setText(“”); txtkq.setText(“”); txta.requestFocus(); } }); btnGiai.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String sa=txta.getText(); int a=0,b=0,c=0; try { a=Integer.parseInt(sa); } catch(Exception ex) { JOptionPane.showMessageDialog(null, “Nhập sai định dạng!”); txta.selectAll(); txta.requestFocus(); return; } String sb=txtb.getText(); try { b=Integer.parseInt(sb); } catch(Exception ex) { JOptionPane.showMessageDialog(null, “Nhập sai định dạng!”); txtb.selectAll(); txtb.requestFocus(); return; } String sc=txtc.getText(); try { c=Integer.parseInt(sc); } catch(Exception ex) { JOptionPane.showMessageDialog(null, “Nhập sai định dạng!”); txtc.selectAll(); txtc.requestFocus(); return; } String kq=””; PTB2Engine engine=new PTB2Engine(a, b, c); kq=engine.compute(); txtkq.setText(kq); } }); Container con=getContentPane(); con.add(pnBorder); } public static void main(String[] args) { PTB2UI ui=new PTB2UI(“ptb2”); ui.doShow(); } }
|
===========================================================================
class PTB2Engine
===========================================================================
public classPTB2Engine {private inta;private intb;private int c;
public PTB2Engine(int a,int b,int c) { this.a=a; this.b=b; this.c=c; } public String compute() { String kq=””; if(this.a==0) { if(this.b==0) { if(this.c==0) { kq=”Vô số nghiệm”; } else { kq=”Vô nghiệm”; } } else { kq=”Pt co 1 no x1=”+(-this.c/this.b); } } else { double delta=this.b*this.b-4*this.a*this.c; if(delta<0) kq=”Vô nghiệm”; else if(delta==0) kq=”No kép x1=x2=”+(-this.b/(2*this.a)); else { kq=”x1 = “+((-this.b-Math.sqrt(delta))/(2*this.a)); kq+=” x2 = “+((-this.b+Math.sqrt(delta))/(2*this.a)); } } return kq; } }
|
đơn giản không thích , thicch rờm rà mới chiệu
cho em hỏi 1 chút về bài này ạ, em thử chạy bài này bị lỗi 2 dòng
PTB2Engine engine= new PTB2Engine();
kq=((Object) engine).compute();
có thể giải thích dùm em được không ạ ?
bài viết quá hay , cosole quá đẹp, (phục)