Swing java

Fermé
Streamooc Messages postés 79 Date d'inscription samedi 17 juin 2017 Statut Membre Dernière intervention 8 février 2023 - Modifié le 22 janv. 2018 à 13:25
Streamooc Messages postés 79 Date d'inscription samedi 17 juin 2017 Statut Membre Dernière intervention 8 février 2023 - 2 juil. 2017 à 20:52
Bonjour,
J'ai créé un JComboBox contenant 0,1,2 que j'appelle IT.Ensuite des petits rectangles représentant ces IT et également un fil rouge.Je veux qu'en sélectionnant un IT que le fil rouge remplisse le rectangle de cet IT.J'ai essayé las j'ai besoin s'il vous plait d'aides.Voici mon code:
public class FenetrePrincipale extends JFrame {

 private static final long serialVersionUID = 1L;

    public FenetrePrincipale() {
        setSize(1364, 788);
        setLocationByPlatform(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(null);

 IntervalleTemps it =new IntervalleTemps(150, 10);
         it.setLocation(992, 21);
         it.setSize(278,25);
         panel.add(it); // ajout au conteneur de 'it'
           
        //Ajout de tout le contenu au conteneur
        getContentPane().add(panel,BorderLayout.CENTER);
        




//Le bouton 'run'
        JButton buttonRun = new JButton("");
        buttonRun.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/run.png.png")));
         buttonRun.setBounds(46, 658, 56, 35);
        panel.add(buttonRun);


//Rectangle vide représentant IT0
JToggleButton toggleButton_16 = new JToggleButton("");
        toggleButton_16.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/barre.png")));
        toggleButton_16.setBounds(1155, 31, 96, 14);
        panel.add(toggleButton_16);
        

JLabel lblIt = new JLabel("IT 0");  //On écrit à côté du rectangle ceci 'IT 0'
        lblIt.setBounds(1261, 31, 46, 14);
        panel.add(lblIt);
        

//Rectangle vide représentant IT1
        JToggleButton toggleButton_17 = new JToggleButton("");
        toggleButton_17.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/barre.png")));
        toggleButton_17.setBounds(1155, 52, 96, 14);
        panel.add(toggleButton_17);
        
 JLabel lblIt_1 = new JLabel("IT 1");  //On écrit à côté du rectangle ceci 'IT 1'
        lblIt_1.setBounds(1261, 52, 46, 14);
        panel.add(lblIt_1);
        

        //Combobox:La barre des intervalles de temps
     
      
      
          String[] messageStrings ={"0","1","2"};
 JComboBox cmbMessageList = new JComboBox(messageStrings);
        cmbMessageList.setBounds(474, 62, 37, 20);
        panel.add(cmbMessageList);
        
        
        //les  intervalles de temps à sélectionner
        cmbMessageList.addActionListener(e ->{
         switch ((String)cmbMessageList.getSelectedItem()) {
         case "0":labelIt.setText("IT 0 est réservé pour la synchronisation");
   break;
   
   case "1":labelIt.setText("Sélection de IT 1");
    break;
     }
        });
 //Utilisation uniquement du bouton 'boutonRun'
              //Exécuter les actions l'une après l'autre 
        buttonRun.addActionListener(new WorkflowActionListener(0, (state,e)->{
      switch (state) {
      case 0:
             //System.out.println("buttonRun: state 0");
             goMessageIt();
             return 1;
         case 1:
             //System.out.println("buttonRun: state 1");
           goIt(it);  //Initialisation du fil rouge
             return 2;
            default:
             throw new IllegalStateException("State invalid: " + state);
  }
     }));  
             

}

 
    /**
* Méthode de 'la sélection d'IT'
*/
 public void goMessageIt(){
     JOptionPane.showMessageDialog(null, "Sélectionner un IT");
    }
     
 
    /**
* Cette méthode permet de déclencher le mouvement de déclencher la couleur montrant l'IT sélectionné
* @param ura1
*/
    private void goIt(IntervalleTemps it) {
        new SwingWorker<Void, Void>() {
            @Override
            protected Void doInBackground() {
                for (int i = 0; i < 12; i++) { //270:Distance que le fil doit parcourir avant de s'arrêter
                    it.incrX();
                   
                   it.repaint();
                    it.setVisible(true);  //on voit le fil rouge défiler quand on appuie sur le bouton 'run'
                  
                   
                }
                return null;
            }
        }.execute();
    }

}

public class WorkflowActionListener implements ActionListener{

 private int state;
    private final BiFunction<Integer, ActionEvent, Integer> actionsPerformed;

    public WorkflowActionListener(int init, BiFunction<Integer, ActionEvent, Integer> actionsPerformed) {
        state = init;
        this.actionsPerformed = actionsPerformed;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        state = actionsPerformed.apply(state, e);
    }

}

public class IntervalleTemps extends Component{
 private static final long serialVersionUID = 1L;

    private int posX;
    private int posY;

    public IntervalleTemps(int posX, int posY) {
        this.posX = posX;
        this.posY = posY;
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.red);
        g.fillRect(posX, posY, 98, 50);
    }

    public void incrX() {
        posX++;
    }

    public void incrY() {
        posY++;
    }


}

public class ClassePrincipale {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
   FenetrePrincipale fenetrePrincipale = new FenetrePrincipale();
         fenetrePrincipale.setVisible(true);

 }

}
A voir également:

2 réponses

Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
2 juil. 2017 à 16:53
Bonjour Streamooc,

Merci de commencer par mettre ton code entre les balises code avec le type Java.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
2 juil. 2017 à 17:32
0
Streamooc Messages postés 79 Date d'inscription samedi 17 juin 2017 Statut Membre Dernière intervention 8 février 2023
2 juil. 2017 à 20:52
Bonjour Felice
public class FenetrePrincipale extends JFrame {

private static final long serialVersionUID = 1L;

public FenetrePrincipale() {
setSize(1364, 788);
setLocationByPlatform(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);

JPanel panel = new JPanel();
panel.setLayout(null);

IntervalleTemps it =new IntervalleTemps(150, 10);
it.setLocation(992, 21);
it.setSize(278,25);
panel.add(it); // ajout au conteneur de 'it'
//Ajout de tout le contenu au conteneur
getContentPane().add(panel,BorderLayout.CENTER);

//Boutons et images

//Le bouton 'run'
JButton buttonRun = new JButton("");
buttonRun.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/run.png.png")));
buttonRun.setBounds(46, 658, 56, 35);
panel.add(buttonRun);



//Rectangle vide représentant IT0
JToggleButton toggleButton_16 = new JToggleButton("");
toggleButton_16.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/barre.png")));
toggleButton_16.setBounds(1155, 31, 96, 14);
panel.add(toggleButton_16);

JToggleButton toggleButton_17 = new JToggleButton("");
toggleButton_17.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/barre.png")));
toggleButton_17.setBounds(1155, 52, 96, 14);
panel.add(toggleButton_17);

JToggleButton toggleButton_18 = new JToggleButton("");
toggleButton_18.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/barre.png")));
toggleButton_18.setBounds(1155, 68, 96, 14);
panel.add(toggleButton_18);

JLabel lblIt = new JLabel("IT 0");
lblIt.setBounds(1261, 31, 46, 14);
panel.add(lblIt);

JLabel lblIt_1 = new JLabel("IT 1");
lblIt_1.setBounds(1261, 52, 46, 14);
panel.add(lblIt_1);

JLabel lblIt_2 = new JLabel("IT 2");
lblIt_2.setBounds(1261, 65, 46, 14);
panel.add(lblIt_2);

//Combobox:La barre des intervalles de temps
String[] messageStrings ={"0","1","2"};
JComboBox cmbMessageList = new JComboBox(messageStrings);
cmbMessageList.setBounds(474, 62, 37, 20);
panel.add(cmbMessageList);

//les intervalles de temps à sélectionner
cmbMessageList.addActionListener(e ->{
switch ((String)cmbMessageList.getSelectedItem()) {

case "0":labelIt.setText("IT 0 est réservé ");
break;

case "1":labelIt.setText("Sélection de IT 1");
break;

case "2":labelIt.setText("Sélection de l'IT2");
break;

}
});
//Utilisation uniquement du bouton 'boutonRun'
//Exécuter les actions l'une après l'autre
buttonRun.addActionListener(new WorkflowActionListener(0, (state,e)->{
switch (state) {
case 0:
//System.out.println("buttonRun: state 0");
goMessageIt();
return 1;
case 1:
//System.out.println("buttonRun: state 1");
goIt(it));
return 2;
default:
throw new IllegalStateException("State invalid: " + state);
}
}));

}


/**
  • Cette méthode permet de déclencher le mouvement de déclencher la couleur montrant l'IT sélectionné
  • @param ura1
  • /

private void goIt(IntervalleTemps it) {
new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() {
for (int i = 0; i < 12; i++) { //270:Distance que le fil doit parcourir avant de s'arrêter
it.incrX();

it.repaint();
it.setVisible(true); //on voit le fil rouge défiler quand on appuie sur le bouton 'run'


}
return null;
}
}.execute();
}


/**
  • Méthode de 'la sélection d'IT'
  • /

public void goMessageIt(){
JOptionPane.showMessageDialog(null, "Sélectionner un IT");
}

}

public class WorkflowActionListener implements ActionListener{

private int state;
private final BiFunction<Integer, ActionEvent, Integer> actionsPerformed;

public WorkflowActionListener(int init, BiFunction<Integer, ActionEvent, Integer> actionsPerformed) {
state = init;
this.actionsPerformed = actionsPerformed;
}

@Override
public void actionPerformed(ActionEvent e) {
state = actionsPerformed.apply(state, e);
}

}
public class IntervalleTemps extends Component{
private static final long serialVersionUID = 1L;

private int posX;
private int posY;

public IntervalleTemps(int posX, int posY) {
this.posX = posX;
this.posY = posY;
}

@Override
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillRect(posX, posY, 98, 50);
}

public void incrX() {
posX++;
}

public void incrY() {
posY++;
}


}


public class ClassePrincipale {

public static void main(String[] args) {
// TODO Auto-generated method stub
FenetrePrincipale fenetrePrincipale = new FenetrePrincipale();
fenetrePrincipale.setVisible(true);

}

}
0