Aider moi à personnaliser une calculatrice

Fermé
Adrian - 25 mars 2015 à 15:23
 Nanashikku - 23 avril 2015 à 23:01
Bonjour,
Voilà,je vient juste de commencer à programmer en JAVA , j'ai créé une calculatrice simple à partir d'un TP et je veut faire quelque chose avec mais je mes je ne suis pas encore habituer à faire ça.Bon voilà les codes et ce que je veut c'est de mettre l'horloge en bas de la calculatrice....
Code complet:
package com.sdz.model;
import java.util.ArrayList;
import java.util.Calendar;
import com.sdz.observer.Observateur;
public class Horloge implements Observateur {
private Calendar cal;
private String hour = " ";
private ArrayList<Observateur> listObservateur = new ArrayList<Observateur>();
public void run(){
while(true){
this.cal = Calendar.getInstance();
this.hour = this.cal.get(Calendar.HOUR_OF_DAY) + " : " + (this.cal.get(Calendar.MINUTE) < 10
? " 0 "+ this.cal.get(Calendar.MINUTE) : this.cal.get(Calendar.MINUTE)
)
+" : "
+(this.cal.get(Calendar.SECOND) < 10 ? " 0 "+ this.cal.get(Calendar.SECOND) : this.cal.get(Calendar.SECOND) );
this.updateObservateur();
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public void addObservateur(Observateur obs){
this.listObservateur.add(obs);
}
public void delObservateur(){
this.listObservateur = new ArrayList<Observateur>();
}
public void updateObservateur(){ for(Observateur obs : this.listObservateur){ obs.update(this.hour);
}
}
}
package com.sdz.observer;
public interface Observable {
public void addObservateur(Observateur obs);
public void updateObservateur();
public void delObservateur();
}
package com.sdz.observer;
public interface Observateur {
public void update(String hour);
}
package com.sdz.vue;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import com.sdz.model.Horloge;
import com.sdz.observer.Observable;
import com.sdz.observer.Observateur;
public class Calculatrice extends JFrame implements ActionListener{

private JPanel panel = new JPanel();
private JLabel label = new JLabel();
private JLabel heure = new JLabel();
private boolean selectOp = false, update = false;
private double resultat;
private Dimension dim = new Dimension(50,40);
private Dimension dim2 = new Dimension(50,31);
private String operateur = "";
public Calculatrice(){
this.setTitle("Calculatrice");
this.setSize(280,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setVisible(true);
initComposant();

this.setContentPane(panel);


}
public void initComposant(){
Font police = new Font("Tahoma",Font.BOLD,20);
label =new JLabel("0");
label.setFont(police);
label.setHorizontalAlignment(JLabel.LEFT);
label.setPreferredSize(new Dimension(220,20));
JPanel operateur = new JPanel();
operateur.setPreferredSize(new Dimension(55,220));

JPanel chiffre = new JPanel();
chiffre.setPreferredSize(new Dimension(165,225));
JPanel panEcran = new JPanel();
panEcran.setPreferredSize(new Dimension(220,30));
JButton t1 = new JButton("1" );
t1.addActionListener(new ChiffreListener());
t1.setPreferredSize(dim);
JButton t2 = new JButton("2" );
t2.addActionListener(new ChiffreListener());
t2.setPreferredSize(dim);
JButton t3 = new JButton("3" );
t3.addActionListener(new ChiffreListener());
t3.setPreferredSize(dim);
JButton t4 = new JButton("4" );
t4.addActionListener(new ChiffreListener());
t4.setPreferredSize(dim);
JButton t5 = new JButton("5" );
t5.addActionListener(new ChiffreListener());
t5.setPreferredSize(dim);
JButton t6 = new JButton("6" );
t6.addActionListener(new ChiffreListener());
t6.setPreferredSize(dim);
JButton t7 = new JButton("7" );
t7.addActionListener(new ChiffreListener());
t7.setPreferredSize(dim);
JButton t8 = new JButton("8" );
t8.addActionListener(new ChiffreListener());
t8.setPreferredSize(dim);
JButton t9 = new JButton("9" );
t9.addActionListener(new ChiffreListener());
t9.setPreferredSize(dim);
JButton t10 = new JButton("0" );
t10.addActionListener(new ChiffreListener());
t10.setPreferredSize(dim);


JButton t12 = new JButton(".");
t12.addActionListener(new ChiffreListener());
t12.setPreferredSize(dim);

JButton plus = new JButton("+" );
plus.addActionListener(new PlusListener());
plus.setPreferredSize(dim2);
JButton moins = new JButton("-" );
moins.addActionListener(new MoinsListener());
moins.setPreferredSize(dim2);
JButton fois = new JButton("*" );
fois.addActionListener(new MultiListener());
fois.setPreferredSize(dim2);
JButton divise = new JButton("/" );
divise.addActionListener(new DivListener());
divise.setPreferredSize(dim2);
JButton carre = new JButton("²" );
carre.addActionListener(new carreListener());
JButton cube = new JButton("³" );
cube.addActionListener(new cubeListener());
JButton tegal = new JButton("=" );
tegal.addActionListener(new EgalListener());
tegal.setPreferredSize(dim);
JButton clear = new JButton("C");
clear.addActionListener(new ResetListener());
clear.setPreferredSize(dim2);
clear.setForeground(Color.red);

chiffre.add(t1);chiffre.add(t2);chiffre.add(t3);chiffre.add(t4);chiffre.add(t5);chiffre.add(t6);
chiffre.add(t7);chiffre.add(t8);chiffre.add(t9);chiffre.add(t10);chiffre.add(t12);chiffre.add(tegal);

operateur.add(clear);operateur.add(plus);operateur.add(moins);operateur.add(fois);operateur.add(divise);
chiffre.add(carre);chiffre.add(cube);

panEcran.add(label);panEcran.setBorder(BorderFactory.createLineBorder(Color.BLUE));
panel.add(panEcran,BorderLayout.NORTH);
panel.add(chiffre,BorderLayout.CENTER);
panel.add(operateur,BorderLayout.EAST);


}
public void calcul(){
if(operateur.equals("+")){
resultat = resultat + Double.valueOf(label.getText()).doubleValue();
label.setText(String.valueOf(resultat));
}
if(operateur.equals("-")){
resultat = resultat - Double.valueOf(label.getText()).doubleValue();
label.setText(String.valueOf(resultat));
}
if(operateur.equals("*")){
resultat = resultat * Double.valueOf(label.getText()).doubleValue();
label.setText(String.valueOf(resultat));
}
if(operateur.equals("/")){
try{
resultat = resultat / Double.valueOf(label.getText()).doubleValue();
label.setText(String.valueOf(resultat));
}catch(ArithmeticException e){
label.setText("0");
}
}
}
class ChiffreListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String str = ((JButton)e.getSource()).getText();
if(update){
update = false;
}
else{
if(!label.getText().equals("0"))
str = label.getText() + str;
}
label.setText(str);
}
}
class EgalListener implements ActionListener{
public void actionPerformed(ActionEvent e){
calcul();
update = true;
selectOp = false;

}
}
class PlusListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(selectOp){
calcul();
label.setText(String.valueOf(resultat));
}
else{
resultat = Double.valueOf(label.getText()).doubleValue();
selectOp = true;
}
operateur = "+";
update = true;
}
}
class MoinsListener implements ActionListener {
public void actionPerformed(ActionEvent arg0){
if(selectOp){
calcul();
label.setText(String.valueOf(resultat));
}
else{
resultat = Double.valueOf(label.getText()).doubleValue();
selectOp = true;
}
operateur = "-";
update = true;
}
}
class MultiListener implements ActionListener{
public void actionPerformed(ActionEvent arg0){
if(selectOp){
calcul();
label.setText(String.valueOf(resultat));
}
else{
resultat = Double.valueOf(label.getText()).doubleValue();
selectOp = true;
}
operateur = "*";
update = true;
}
}
class DivListener implements ActionListener{
public void actionPerformed(ActionEvent arg0){
if(selectOp){
calcul();
label.setText(String.valueOf(resultat));
}
else{
resultat = Double.valueOf(label.getText()).doubleValue();
selectOp = true;
}
operateur = "/";
update = true;
}
}
class ResetListener implements ActionListener{
public void actionPerformed(ActionEvent arg0){
selectOp = false;
update =true;
resultat = 0;
operateur = "";
label.setText("");
}
}
class carreListener implements ActionListener{
public void actionPerformed(ActionEvent arg0){
operateur = "²";
}
}
class cubeListener implements ActionListener{
public void actionPerformed(ActionEvent arg0){
operateur = "³";
}
}
public static void main(String[] arg){
Calculatrice cal = new Calculatrice();
Fenetre fene = new Fenetre();

}
}
package com.sdz.vue;

import java.awt.BorderLayout;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;

import com.sdz.model.Horloge;
import com.sdz.observer.Observable;
import com.sdz.observer.Observateur;
public class Fenetre extends JFrame{
private JLabel label = new JLabel();
private Horloge Horloge;

public Fenetre(){

this.setSize(200, 80);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setResizable(false);

this.Horloge = new Horloge();
this.Horloge.addObservateur(new Observateur(){
public void update(String hour){
label.setText(hour);
}
});

Font police = new Font("DS-Digital", Font.TYPE1_FONT, 30);
this.label.setFont(police);
this.label.setHorizontalAlignment(JLabel.CENTER);
this.getContentPane().add(this.label, BorderLayout.CENTER);
this.Horloge.run();

}
public static void main(String[] args){
Fenetre fen = new Fenetre();

}
}
Ca a été long et je remercie à celui qui à lu jusqu'à la fin et Je le remercie d'avance s'il peut m'aider......:);):):):):)
A voir également:

2 réponses

Utilisateur anonyme
19 avril 2015 à 19:33
Salut, si tu travail sur eclipse, je te conseil d'utiliser WindowBuilder.
Pour l'installer, dans eclipse va dans Help > Install New Software... > dans le champ 'Work with' sélectionne "http://download.eclipse.org/releases/<ta version d'eclipse>" > ensuite dans la liste va dans General Purpose Tools > et télécharge et installe tout ce qui concerne WindowBuilder, SWT Designer et Swing Designer.

Une fois eclipse redémarré, crée un nouveau projet (en gardant l'autre) et crée une nouvelle class avec le bouton :
et sélectionne JFrame.

Pour finir, en bas du code source dans l'onglet Design utilise l'AbsoluteLayout et clique l'aperçu dans la fenêtre à droite. Voilà maintenant replace tes boutons et tout ça, donne leurs les mêmes ID et réutilise ton code précédent (sans la partie graphique).

Ça va te prendre un peu de temps, mais tu gagne dans la simplicité et tu peux réutiliser ça pour tes futurs projets ^^

Voilà j'espère avoir été clair et n'hésite pas si tu as une question :)
0
Merci!Je pense que ça va beaucoup m'aider ! :)
0