Partage
  • Partager sur Facebook
  • Partager sur Twitter

JTabbedPane et MouseListener

Incompatibilité

    18 juillet 2011 à 15:13:30

    Bonjour à tous :

    En exécutant le code suivant, vous verrez qu'il est difficile (mais pas impossible) de changer d'onglet dans le JTabbedPane.

    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.SwingUtilities;
    
    public class MainWindowTest extends JFrame
    {
    	public MainWindowTest()
    	{
    
    		JTabbedPane tp = new JTabbedPane();
    
    		tp.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
    		tp.add("", new JLabel("Example bug"));
    		JPanel panel = new JPanel();
    		panel.add(new JLabel("Working"));
    		panel.add(new JButton("Do nothing"));
    
    		panel.setOpaque(false);
    		tp.setTabComponentAt(0, panel);
    		tp.add("", new JLabel("Example bug"));
    		JPanel panel2 = new JPanel();
    		panel2.add(new JLabel("But hard to focus"));
    		panel2.add(new JButton("Do nothing"));
    		panel2.setOpaque(false);
    		// /* Uncomment here to make it work normally.
    		panel2.addMouseListener(new MouseAdapter()
    		{
    			@Override
    			public void mouseClicked(MouseEvent e)
    			{
    
    				System.out.println("Panel 2 clicked");
    
    			}
    		}); //  */
    		tp.setTabComponentAt(1, panel2);
    
    		add(tp);
    		setSize(400, 200);
    		setVisible(true);
    
    	}
    
    	public static void main(String[] args)
    	{
    		SwingUtilities.invokeLater(new Runnable()
    		{
    
    			@Override
    			public void run()
    			{
    				new MainWindowTest();
    
    			}
    		});
    	}
    
    }
    



    Par contre si vous enlevez les commentaires balisés, ça marche très bien.

    Ma question : que peut-on faire pour quand même mettre des mouseListener sur les composants des onglets? Quelqu'un à déjà eu le problème et connait une astuce pour le résoudre ?

    Merci à tous :-)
    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2011 à 21:48:31

      Bonsoir,

      Il n'est pas difficile de changer d'onglet, il suffit de ne pas cliqué sur le texte, étant donnée que le MouseListener que tu as ajouté est sur le panel2
      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2011 à 8:53:49

        Oui merci.

        Ca n'explique pas pourquoi ça ne change pas d'onglet en cliquant sur le texte. Je ne vois aucune raison que ça ne marche pas, puisqu'un en enlevant le mouseListener(qui ne fait rien !), ça marche.
        • Partager sur Facebook
        • Partager sur Twitter

        JTabbedPane et MouseListener

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown