Ajouter un commentaire

Niroken

Bonjour,

Pour éditer des composants d'une interface graphique à partir
d'une autre classe, tu peux modifier les composants de ton
IHM dans une autre classe comme ceci :

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class TestJFrame1 extends JFrame implements ActionListener{
    public JButton mButtonAction1;
    public JButton mButtonAction2;
    public JTextArea mTextArea;
    
    public TestJFrame1 () {
        mButtonAction1 = new JButton();
        mButtonAction2 = new JButton();
        mTextArea = new JTextArea();
        
        mButtonAction1.addActionListener(this);
        mButtonAction2.addActionListener(this);
        
        /*Positionnement des composants : à implémenter*/
    }
    
    public void actionPerformed(ActionEvent pArg0) {
        if (pArg0.getSource() == mButtonAction1) {
            TraitementMetier vTraitementMetier = new TraitementMetier(this);
            vTraitementMetier.action1();
        } else if (pArg0.getSource() == mButtonAction2) {
            TraitementMetier vTraitementMetier = new TraitementMetier(this);
            vTraitementMetier.action2();
        }
    }
}

class TraitementMetier {
    
    TestJFrame1 mTestJFrame;
    
    public TraitementMetier (TestJFrame1 pTestJFrame) {
        mTestJFrame = pTestJFrame;
    }
    
    public void action1() {
        mTestJFrame.mTextArea.setText("un texte 1");
        mTestJFrame.mButtonAction1.setBackground(Color.BLACK);
    }
    
    public void action2() {
        mTestJFrame.mTextArea.setText("un texte 2");
        mTestJFrame.mButtonAction2.setBackground(Color.RED);
    }
}

Le soucis avec cette implémentation c'est que la "partie" traitementMetier manipule des objets graphiques et que ce n'est normalement pas son role; du coup je te conseillerais cette implémentation :

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class TestJFrame2 extends JFrame {
    public JButton mButtonAction1;
    public JButton mButtonAction2;
    public JTextArea mTextArea;
        
    public TestJFrame2 () {
        mButtonAction1 = new JButton();
        mButtonAction2 = new JButton();
        mTextArea = new JTextArea();
                
        mButtonAction1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent pArg0) {
                TraitementMetier vTraitementMetier = new TraitementMetier();
                vTraitementMetier.action1();
                
                mButtonAction1.setBackground(vTraitementMetier.mColorTmp);
                mTextArea.setText(vTraitementMetier.mTextTmp);
            }
        });
        mButtonAction2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent pArg0) {
                TraitementMetier vTraitementMetier = new TraitementMetier();
                vTraitementMetier.action2();
                
                mButtonAction2.setBackground(vTraitementMetier.mColorTmp);
                mTextArea.setText(vTraitementMetier.mTextTmp);
            }
        });
        
        /*Positionnement des composants : à implémenter*/
    }
    
}

class TraitementMetier {
    
    public String mTextTmp;
    public Color mColorTmp;
    
    public void action1() {
        mTextTmp = "un texte 1";
        mColorTmp = Color.BLACK;
    }
    
    public void action2() {
        mTextTmp = "un texte 2";
        mColorTmp = Color.RED;
    }
    
}

J'espère que ca peut t'aider.

Bonne chance,
Niroken

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  SSS   DDD   K  K      J  V     V 
S D D K K J V V
SSS D D KK J V V
S D D K K J J V V
SSSS DDD K K JJJ V