Ba on a etudié sa comme sa en cours nous
D'ailleur sa marchais mais plus la
Sinon j'ai reussis grace a la méthode de kaoron mais il reste un autre probleme
En faite la JFrame la est appellée par une autre fenetre et doit lui retourner une Couleur . J'ai utilise une technique qui permet de relancer la methode des que je ne trouve aps le bon resultat mais il me fait une erreur de mémoire
. Donc si vous pouriez m'aider à trouver une solution ^^ Je vous remet le code :
- ***********************************************
- **********
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Couleurperso extends JFrame {
private JComboBox cb;
private Color couleur;
private int rouge;
private int vert;
private int bleu;
private int choix;
private boolean fin;
public Couleurperso(){
super("Couleur personalisé");
fin = false;
rouge=1;
vert=1;
bleu=1;
this.setDefaultCloseOperation(1);
couleur=Color.white;
cb= new JComboBox ( new String[] {"Choix","Rouge","Vert","Bleu"});
JPanel panneau_principal =((JPanel)this.getContentPane());
JPanel centre = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(couleur);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
};
KeyListener kl = new KeyListener(){
public void keyReleased(KeyEvent e){
}
public void keyPressed(KeyEvent e){
}
public void keyTyped(KeyEvent f){
cb.setEnabled(true);
System.out.println(f.getKeyChar());
switch(choix){
case 1 :
if (f.getKeyChar() == '+')
rouge++;
else
rouge--;
if (rouge <0)
rouge=0;
else if (rouge>255)
rouge=255;
break;
case 2 :
if (f.getKeyChar() == '+')
vert++;
else
vert--;
if (vert <0)
vert=0;
else if (vert>255)
vert=255;
break;
case 3 :
if (f.getKeyChar() == '+')
bleu++;
else
bleu--;
if (bleu <0)
bleu=0;
else if (bleu>255)
bleu=255;
break;
}
couleur= new Color(rouge,vert,bleu);
if (f.getKeyChar() == 'q'){
fin=true;
Couleurperso.this.setVisible(false);
}
repaint();
}
};
cb.addKeyListener(kl);
panneau_principal.setPreferredSize(new Dimension(200,200));
panneau_principal.setLayout(new BorderLayout());
cb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
switch(cb.getSelectedIndex()){
case 1:
choix=1;
break;
case 2 :
choix = 2;
break;
case 3 :
choix = 3;
break;
}
}
});
panneau_principal.add(cb,BorderLayout.NORTH);
panneau_principal.add(centre,BorderLayout.CENTER
);
this.pack();
this.setVisible(true);
}
public Color lance(){
if ( fin) return (new Color(rouge,vert,bleu));
else return lance();
}
}
- ***********************************************
- ******
Dans l'autre fenetre je fait cela :
Couleurperso coucou = new Couleurperso();
couleur=coucou.lance();
Merci d'avance,