Button jave

Résolu
Bonjour,

quelle fonction je dois utiliser pour qu'en appuyant sur un boutton , le programme s'orient sur une deuxième page?



--
Cervelle inoccupée, le diable y trouve tente dressée.

5 réponses

Résumé de la discussion

Le problème consiste à faire passer l’affichage à une seconde page lorsqu’on clique sur un bouton dans une application Java sous Windows 7. Plusieurs réponses préconisent d’ajouter un ActionListener au JButton et, dans actionPerformed, d’instancier la seconde page, par exemple en utilisant new SecondPage(), ce qui permet d’ouvrir une nouvelle fenêtre ou de charger une vue. Des échanges précisent aussi que passer à la page suivante peut impliquer de choisir entre une nouvelle JFrame, un JPanel chargé ou un système comme CardLayout pour basculer les vues. En complément, plusieurs évoquent des considérations comme la navigation entre contenus, mais l’approche centrale reste l’écoute des événements et l’ouverture d’une seconde vue.

Bobot (l’IA à votre service)
  1. Modérateur
    C'est quoi pour toi "s'orienter vers une deuxième page" ?
    Est-ce que t'as un début de code pour voir où tu veux rajouter cette fonctionnalité ?
    Mais sinon, effectivement, tu devras ajouter un ActionListener avec addActionListener
    1
    1. par exemple quand tu appuis sur le boutton "leen.net" la page de mon profil s'ouvrira.... mais en java pas en php
      merci d'avance
      0
    2. Modérateur
      Tu fais du Java EE ? C'est une applet ? Ce serait quand même bien que tu précises la technologie...
      Mais pour l'ActionListener ça ne devrait pas changer grand chose...
      0
    3. oui je suis en java... j'ai crée le bouton... quelle technologie je dois préciser?
      0
    4. Modérateur
      En Java, il y a plusieurs versions, Java SE pour les applications normales ("comparable" au C++), Java EE pour faire les sites web ("comparable" en PHP), Java ME pour faire les applications mobiles.

      Tu parlais de PHP alors je me pose des question c'est normal... De plus ton bouton ça peut être un java.awt.Button, un java.swing.JButton, ou un autre... Bref, on ne sait pas ce que tu fais, ce serait dommage de te donner une mauvaise réponse parce que tu n'as pas été précis sur la question !

      Mais comme je l'ai dit, pour l'ActionListener ça ne devrait pas changer grand chose, mais c'est pour la partie "la page de mon profil s'ouvrira" que ça risque de pas mal changer...
      0
    5. Modérateur
      En Java SE, une application swing normale, tu peux essayer ça :

      JJButton bouton = new JButton("CCM");
      
      bouton.addActionListener(new ActionListener()
      {
          @Override
          public void actionPerformed(ActionEvent ae) 
          {
              try
              {
                  Desktop.getDesktop().browse(new URI( "https://www.commentcamarche.net/"));
              }
              catch (Exception e)
              {
                  JOptionPane.showMessageDialog(null,e.toString(), e.getClass().getCanonicalName(),JOptionPane.ERROR_MESSAGE);
              }
          }
      });
      
      add(bouton);
      0
  2. peut être c'est dans ActionListener... mais je n'arrive pas à trouver la solution... svp ça bloque mon programme
    0
    1. je t'ai écris le code, je ne sais pas si ça t'aidera

      imagine que le CCM est un programme qui est crée en java et qui est disponible sur ton ordinateur sans être connecte à Internet quand tu appuis sur le bouton "leen.net" ma page de profil apparaît... c'est la même chose dans mon programme
      public class main extends javax.swing.JFrame {
      
         
          public main() {
              initComponents();
          }
      
        
          @SuppressWarnings("unchecked")
         
          private void initComponents() {
      
              jButton1 = new javax.swing.JButton();
              jMenuBar1 = new javax.swing.JMenuBar();
      
              setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
             
      
              jButton1.setText("page 1");
              
              javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
              getContentPane().setLayout(layout);
              layout.setHorizontalGroup(
                  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                      .addContainerGap(223, Short.MAX_VALUE)
                      .addComponent(jButton1)
                      .addGap(104, 104, 104))
              );
              layout.setVerticalGroup(
                  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addGroup(layout.createSequentialGroup()
                      .addGap(112, 112, 112)
                      .addComponent(jButton1)
                      .addGap(163, 163, 163))
              );
      
              pack();
         
          public static void main(String args[]) {
            
              try {
                  for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                      if ("Nimbus".equals(info.getName())) {
                          javax.swing.UIManager.setLookAndFeel(info.getClassName());
                          break;
                      }
                  }
              } catch (ClassNotFoundException ex) {
                  java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              } catch (InstantiationException ex) {
                  java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              } catch (IllegalAccessException ex) {
                  java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                  java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
              }
           
              java.awt.EventQueue.invokeLater(new Runnable() {
      
                  public void run() {
                      new main().setVisible(true);
                  }
              });
          }
         
          private javax.swing.JButton jButton1;
          private javax.swing.JMenuBar jMenuBar1;
       
      }
      
      0
      1. Modérateur
        Je suis désolé, mais je vois toujours pas ce que tu veux faire !
        Pour gérer le bouton tu dois faire comme je l'ai montré tout à l'heure.

        Par contre c'est une très mauvaise idée d'appeler ta classe main !
        Et en ce qui concerne la méthode main, si le L&F n'est pas trouvé, ce n'est pas suffisant pour avoir une erreur sévère... un avertissement à la rigueur mais c'est tout.
        0
      2. merci :) :(
        0
    2. Ah oui
      j'espère maintenant que tu comprendras
      (pardon si je te dérangeras)
      en html nous écrivons le code <a href="......."> passer a la page suivante</a> comment on peut traduire cette fonction en java?
      0
      1. Modérateur
        Mais explique ce qu'est une page !!!

        Faire un lien vers un site internet pas de problème, il suffit de faire un Desktop.browse comme je l'ai fait tout à l'heure, et si au lieu de cliquer sur un JButton tu veux le faire sur un JLabel, c'est pareil.
        Mais le principe de "passer à la page suivante" n'a pas de sens dans une application Java à moins de définir qu'est-ce que tu entends par "page".
        Dans ton code, j'ai une Frame, un Layout et un Button. C'est assez peu pour savoir ce qu'est ta "page"
        0
      2. je fais un programme pour un tribunal... quand j'appuie sur le bouton "modifier les décisions", sur l'écran apparait le forum spécifique contenant tous les détails des décisions
        0
      3. Modérateur
        Et tu as déjà fait la méthode qui fait l'affichage de ce forum ? Parce qu'il suffit de l'appeler à l'intérieur de l'actionPerformed pour pouvoir gérer le bouton...
        0
      4. ah voila mon problème : comment faire la méthode qui affiche ce forum!!
        0
      5. Modérateur
        Bah tout dépend comment tu veux le faire ton forum !
        Si j'ai bien compris tout doit rester dans ton application swing, mais tu peux rendre visible une nouvelle Frame, ou alors si tu as un TabbedPanes, basculer d'un onglet à un autre, etc...
        Tu peux bien faire ton application comme tu veux, cela va dépendre des besoins qu'en ont les utilisateurs, mais cela ne concerne plus du tout le problème de bouton parce que ça c'est résolu.
        0
    3. Bonjour KX!!
      Ça marche, ça marche, ça marche!!!
      dans la première page, j'ai écris ce suit:

      public classe firstPage...{
      ......
      JButton b;
      public firstPage(){
      .......
      b.addActionListener(this);
      .........
      }
      public void actionPerformed(ActionEvent e)
      {
      new secondPage();
      }
      et ça marche...
      merci beaucoup!!!
      mais je ne sais pas comment mettre un background(image) pour ma page... j'ai demandé mon question mais pas de réponse.... :(
      0
      1. Modérateur
        Il y a déjà eu pas mal de réponses à ce sujet, regarde ici par exemple.
        0
      2. j'ai essayé ce lien que tu m'as indiqué...
        je l'ai écrit en sous classe , et ce qui est écrit dans main , je l'ai écrit dans superclass, mais j'ai obtenu deux fenêtres... une pour l'image et l'autre pour le code sans l'image... comment je peux avoir les deux dans une même fenêtre?
        0
      3. Modérateur
        Ce lien n'était qu'un exemple parmi d'autres et comme il date de 2005, il pourrait surement être amélioré, mais pour essayer de repérer/corriger le problème il faudrait avoir le détail de comment tu as ce code dans ton programme... Et comme ça ne concerne plus l'ActionListener de ton bouton, créer une nouvelle discussion pour résoudre ce problème serait plutôt mieux.
        0
      4. ok merci :), mais j'ai crée une discussion depuis 10 mars, et pas de réponse...
        je veux reesayyer
        0
      5. Modérateur
        Perso, si je fais comme ça, ça marche :

        public class Test extends ImageFond
        {
        	public Test(String imagePath) 
        	{
        		super(imagePath);
        		ImageFond fond = new ImageFond(imagePath);
        		fond.pack();
        		fond.setVisible(true);
        	}
        
        	public static void main(String[] args) 
        	{
        		 new Test("D:/test.png");
        	}
        }

        Mais ce qui est le plus important, ce n'est pas d'utiliser cette classe, mais de comprendre le principe du paint(Graphics) qui fait un drawImage, parce qu'au final le problème se résume à ça !
        0