import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class FractionGUI { // Déclarer les objets JTextField aTF,bTF,a_bTF,cTF,dTF,eTF,c_dTF,fTF,e_fTF; JComboBox operCB; JButton evalB; void creerObjets(){ aTF=new JTextField(10); bTF=new JTextField(10); a_bTF=new JTextField(10); cTF=new JTextField(10); dTF=new JTextField(10); c_dTF=new JTextField(10); eTF=new JTextField(10);eTF.setEditable(false); fTF=new JTextField(10);fTF.setEditable(false); e_fTF=new JTextField(10); operCB = new JComboBox(new String[]{"+","-","*","/"}); evalB=new JButton("="); } JPanel fractionPanel(JTextField num,JTextField denom, JTextField val){ JPanel p=new JPanel(); p.setLayout(new GridLayout(3,1)); p.add(num); p.add(denom); p.add(val); val.setEditable(false); return p; } void placerObjets(Container c){ c.setLayout(new BoxLayout(c,BoxLayout.X_AXIS)); c.add(fractionPanel(aTF, bTF,a_bTF)); c.add(operCB); c.add(fractionPanel(cTF, dTF,c_dTF)); c.add(evalB); c.add(fractionPanel(eTF, fTF,e_fTF)); } int getInt(String nom,JTextField tf){ try { return Integer.parseInt(tf.getText()); } catch (NumberFormatException e){ System.err.println(nom+": entier illégal "+tf.getText()); return 1; } } void ecouterObjets(){ evalB.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { Fraction f1=new Fraction(getInt("numérateur 1",aTF), getInt("dénominateur 1",bTF)); Fraction f2=new Fraction(getInt("numérateur 2",cTF), getInt("dénominateur 2",dTF)); Fraction res=null; switch (operCB.getSelectedIndex()){ case 0:res=f1.plus(f2);break; case 1:res=f1.minus(f2);break; case 2:res=f1.mult(f2);break; case 3:res=f1.div(f2);break; } eTF.setText(""+res.getNumerateur()); fTF.setText(""+res.getDenominateur()); a_bTF.setText(String.format("%.3g",f1.doubleValue())); c_dTF.setText(String.format("%.3g",f2.doubleValue())); e_fTF.setText(String.format("%.3g",res.doubleValue())); }}); } public static void main(String[] args) { JFrame f = new JFrame(); FractionGUI g = new FractionGUI(); g.creerObjets(); g.placerObjets(f.getContentPane()); g.ecouterObjets(); f.setSize(500,100); f.setLocation(100,100); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }