Assigner effet a bouton

Guldir - 22 nov. 2017 à 14:18
Guldir Messages postés 1 Date d'inscription mercredi 22 novembre 2017 Statut Membre Dernière intervention 24 novembre 2017 - 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 ?

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
22 nov. 2017 à 18:48
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...
0
Guldir Messages postés 1 Date d'inscription mercredi 22 novembre 2017 Statut Membre Dernière intervention 24 novembre 2017
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 ?
0
Rejoignez-nous