Assigner effet a bouton

Guldir - 22 nov. 2017 à 14:18 - Dernière réponse : Guldir 1 Messages postés mercredi 22 novembre 2017Date d'inscription 24 novembre 2017 Dernière intervention
- 24 nov. 2017 à 10:16
Bonjour,
pour mon projet de lycée j'ai besoin de créer une petite application avec une interface graphique mais je rencontre un problème, je n'arrive pas a faire fonctionner mes boutons
Voici mon code :
import java.awt.Container;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Lancement {
public static void main(String[] args){
Container fenetre = new JFrame();
fenetre.setSize(800,480);
fenetre.setLocation(560,300);
((java.awt.Frame) fenetre).setUndecorated(true);
fenetre.add(new JLabel(new ImageIcon("D:/textures/intro.jpg")));
fenetre.setVisible(true);
JButton Bouton = new JButton("J1");
Font police = new Font("Tahoma", Font.BOLD, 50);
Bouton.setFont(police);
Bouton.setVisible(true);
Bouton.setSize(111,137);
Bouton.setLocation(20,313);
fenetre.add(Bouton);
JButton Bouton2 = new JButton("J2");
Bouton2.setFont(police);
Bouton2.setVisible(true);
Bouton2.setSize(111,137);
Bouton2.setLocation(670,313);
fenetre.add(Bouton2);
}

public static void setvisible(boolean b){
Container fenetre = new JFrame();
fenetre.setSize(800,480);
fenetre.setLocation(560,300);
((java.awt.Frame) fenetre).setUndecorated(true);
fenetre.add(new JLabel(new ImageIcon("D:/textures/intro.jpg")));
fenetre.setVisible(b);
JButton Bouton = new JButton("J1");
Font police = new Font("Tahoma", Font.BOLD, 50);
Bouton.setFont(police);
Bouton.setVisible(b);
Bouton.setSize(111,137);
Bouton.setLocation(20,313);
fenetre.add(Bouton);
JButton Bouton2 = new JButton("J2");
Bouton2.setFont(police);
Bouton2.setVisible(b);
Bouton2.setSize(111,137);
Bouton2.setLocation(670,313);
fenetre.add(Bouton2);

}}

import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;

public class CLIC extends Lancement implements MouseListener{
Lancement fen = new Lancement();
B1OFF fen1 = new B1OFF();
private JButton Bouton = new JButton("bouton 1");
private JButton Bouton2 = new JButton("bouton 2");

public void Lancement(){
Bouton.addMouseListener( this);
Bouton2.addMouseListener(this);
}
public void mouseClicked(MouseEvent e) {


}

@Override
public void mouseEntered(MouseEvent e) {


}

@Override
public void mouseExited(MouseEvent e) {


}

@Override
public void mousePressed(MouseEvent e) {
B1OFF.setvisible(true);
Lancement.setvisible(false);
}

@Override
public void mouseReleased(MouseEvent e) {

}
}

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

public class B1OFF{
public static void setvisible(boolean b) {
JFrame B1OFF = new JFrame();
B1OFF.setSize(800,480);
B1OFF.setLocation(560,300);
B1OFF.add(new JLabel(new ImageIcon("D:/textures/introB1OFF.jpg")));
B1OFF.setUndecorated(true);
B1OFF.setVisible(false);
}}


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

public class B2OFF {
public static void main(String[] args){
JFrame B2OFF = new JFrame();
B2OFF.setSize(800,480);
B2OFF.setLocation(560,300);
B2OFF.add(new JLabel(new ImageIcon("D:/textures/introB2OFF.jpg")));
B2OFF.setUndecorated(true);
B2OFF.setVisible(true);
}}

Est ce que vous pouvez m'aider a les faire fonctionner ?
Afficher la suite 

2 réponses

Répondre au sujet
KX 15087 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 22 nov. 2017 à 18:48
0
Utile
1
Bonjour,

Tes 4 classes ne sont pas liées entre elles.
CLIC utilise B1OFF, mais Lancement et B2OFF (qui ont les deux méthodes main...) n'appellent ni CLIC ni B1OFF.
Pour le main qui s'exécute (peu importe lequel des deux) c'est comme si ces classes n'existaient pas, donc forcément les boutons ne vont pas faire grand chose.

De plus, tu utilises à tort le mot clé static, il vaut mieux passer des objets aux constructeurs de tes classes pour ajouter des comportements dessus, plutôt que de faire des croisements de méthodes static sur des objets qui n'ont rien à voir.

Exemple dans le code suivant, le Listener Clic prends deux Component en paramètres : celui qu'elle cache et celui qu'elle affiche.

import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class CLIC extends MouseAdapter {
    private final Component comp1;
    private final Component comp2;

    public CLIC(Component comp1, Component comp2) {
        this.comp1 = comp1;
        this.comp2 = comp2;
    }

    @Override
    public void mousePressed(MouseEvent e) {
        comp1.setVisible(false);
        comp2.setVisible(true);
    }
}

import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Lancement {
    public static void main(String[] args) {
        JFrame B1OFF = new JFrame();
        B1OFF.setSize(800, 480);
        B1OFF.setLocation(560, 300);
        B1OFF.add(new JLabel(new ImageIcon("D:/textures/introB1OFF.jpg")));
        // B1OFF.setUndecorated(true);
        B1OFF.setVisible(false);
        B1OFF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JFrame B2OFF = new JFrame();
        B2OFF.setSize(800, 480);
        B2OFF.setLocation(560, 300);
        B2OFF.add(new JLabel(new ImageIcon("D:/textures/introB2OFF.jpg")));
        // B2OFF.setUndecorated(true);
        B2OFF.setVisible(false);
        B2OFF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JFrame fenetre = new JFrame();
        fenetre.setLayout(null);
        fenetre.setSize(800, 480);
        fenetre.setLocation(560, 300);
        // fenetre.setUndecorated(true);
        fenetre.add(new JLabel(new ImageIcon("D:/textures/intro.jpg")));

        JButton Bouton = new JButton("J1");
        Font police = new Font("Tahoma", Font.BOLD, 50);
        Bouton.setFont(police);
        Bouton.setVisible(true);
        Bouton.setSize(111, 137);
        Bouton.setLocation(20, 313);
        fenetre.add(Bouton);

        JButton Bouton2 = new JButton("J2");
        Bouton2.setFont(police);
        Bouton2.setVisible(true);
        Bouton2.setSize(111, 137);
        Bouton2.setLocation(670, 313);
        fenetre.add(Bouton2);

        Bouton.addMouseListener(new CLIC(fenetre, B1OFF));
        Bouton2.addMouseListener(new CLIC(fenetre, B2OFF));
        fenetre.setVisible(true);
        fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Remarque : attention aux conventions de nommage en Java, les classes doivent commencer par une première lettre majuscules et les suivantes sont en minuscules (exemple : Clic au lieu de CLIC, B1off au lieu de B1OFF...) et les objets doivent eux être complètement en minuscules (exemple : b1off au lieu de B1OFF, bouton au lieu de Bouton...)
Cela permet notamment de distinguer les objets et les classes, ce que tu étais incapable de faire quand B1OFF est à la fois le nom d'une classe et le nom d'un objet de cette classe...
Guldir 1 Messages postés mercredi 22 novembre 2017Date d'inscription 24 novembre 2017 Dernière intervention - 24 nov. 2017 à 10:16
Merci grâce a toi j'ai pu comprendre et régler mes problèmes, mais je n'arrive plus a afficher l'image de ma classe fenêtre qui reste grise.
Aussi pourrai tu me dire s'il est possible d'ajouter une texture a une bouton ?
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.