Bonne conception d'une IHM
Bonjour à tous,
Je suis en train de développer un petit calculateur que j'aimerais mettre en forme avec une interface graphique.
Le problème est que je suis complètement perdu avec les différentes classes à utiliser.
Pour le moment j'affiche une fenêtre, un slider ainsi qu'un bouton de lancement du programme Main. La valeur du slider est utilisée pour amorcer le lancement du calcul.
Est ce que je dois créer une seule classe IHM dans laquelle je défini tous les objets ?
Est ce que je dois créer des classe Fenetre, Slider, Button ?
Est ce que je dois coder dans le Main ou faire en sorte de définir des attributs ?
Voici ce que j'ai fais pour le moment :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
public class IHM{
public static void main(final String[] args) {
final VilainHand vH = new VilainHand();
// Instanciation des objets
JFrame f = new JFrame ("Calculator");
final JLabel label = new JLabel("Main actuelle : ..");
final JButton bRun = new JButton ("Run");
JSlider slide = new JSlider();
// Definir la fenetre
f.setSize (750, 250);
f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Fermeture fenetre
// Definir le slider
slide.setMaximum((Calculator.vilainHand.length-1));
slide.setMinimum(0);
slide.setValue(30);
slide.setMinorTickSpacing(10);
slide.setMajorTickSpacing(20);
ChangeListener cl = new ChangeListener() { // Ecouter le slider
@Override
public void stateChanged(ChangeEvent eventSlider) {
label.setText("Main actuelle : " +vH.getIndex(((JSlider)eventSlider.getSource()).getValue()));}
};
bRun.addActionListener(new ActionListener() { // Ecouter le boutton run
@Override
public void actionPerformed(ActionEvent e) {
Copy_Main.main(args);
}
});
slide.addChangeListener(cl);
//getContentPane permet d'obtenir la zone conteneur de la fenetre
Container contentpane = f.getContentPane();
//Ajout du BTN au sud
contentpane.add(bRun, BorderLayout.SOUTH);
contentpane.add(slide,BorderLayout.NORTH);
contentpane.add(label,BorderLayout.EAST);
// Affichage
f.setVisible (true);
slide.setVisible (true);
}
} |
Ensuite j'imagine l'instancier dans le Main de mon programme principal :
Code:
1 2 3 4 5 6 7 8 9 10
|
public class Calculateur {
public static void main(String[] args) {
IHM intGraphique = new IHM();
// Démarrage du calcul
..
.. |
Si quelqu'un pourrait m'orienter un peu, je lui en serrai reconnaissant !
Merci ;)