comment utiliser JSplitPane

comment utiliser JSplitPane - Java - Programmation

Marsh Posté le 14-04-2008 à 16:24:43    

bonjour tous ,
 
encore j'ai un problème au niveau de class ecouteur je vous explique , j'ai utiliser un JSplitPane qui me permet de couper la zone du travail en deux j'ai mis un bouton dans la partis gauche et j'ai lui associé une class ecouteur qui me permet d'afficher une image dans la partis droite de JSplitPane mais sa marche pas je ne comprend rien :pt1cable:  
 
voila la classe principale
 
 
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.text.*;
import java.util.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
 
import java.awt.*;
import java.awt.geom.Rectangle2D;
 
import javax.swing.*;
 
 
 
 
 
public class Interface extends JFrame  {
 
 private static final long serialVersionUID = 1L;
 
 private JPanel jContentPane = null;
 
 
 
 private JSplitPane jSplitPane = null;
 
 
 
 private JCheckBox jCheckBox = null;
 
 private JCheckBox jCheckBox1 = null;
 
 private JButton jButton = null;
 
 
 
 
 private JPanel jPanel = null;
 
 private JPanel jPanel1 = null;
 
 private JPanel jPanel2 = null;
 
 private JPanel jPanel3 = null;
 
 private JPanel jPanel4 = null;
 
 private JPanel jPanel5 = null;
 
 private JPanel jPanel6 = null;
 
 private JPanel jPanel7 = null;
 
 private JPanel jPanel8 = null;
 
 private JPanel jPanel9 = null;
 
 private JPanel jPanelModele = null;
 
 private JScrollPane dd = null;
 
 
 
 
 
 
/**
  * This method initializes jButton  
  *  
  * @return javax.swing.JButton  
  */
  private JPanel getJPanel7() {
  if (jPanel7 == null) {
   jPanel7 = new JPanel();
   jPanel7.setLayout(new BorderLayout());
   
   
   jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.SoftBevelBorder.LOWERED), "le graphe ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("DialogInput", java.awt.Font.PLAIN, 12), java.awt.SystemColor.activeCaption));
   
  }
  return jPanel7;
 }
 
 
 
 /**
  * This method initializes jPanel  
  *  
  * @return javax.swing.JPanel  
  */
 private JPanel getJPanel1() {
  if (jPanel1 == null) {
   GridLayout gridLayout = new GridLayout();
   gridLayout.setRows(2);
   gridLayout.setColumns(1);
   jPanel1 = new JPanel();
   jPanel1.setPreferredSize(new Dimension(400, 600));
   jPanel1.setLayout(gridLayout);
   jPanel1.add(getJPanelModele(), null);
   jPanel1.add(getJPanel2(), null);
  }
  return jPanel1;
 }
 
 private JPanel getJPanelModele() {
  if (jPanelModele == null) {
   jPanelModele = new JPanel();
   jPanelModele.setLayout(null);
   jPanelModele.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.SoftBevelBorder.LOWERED), "Modele  ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("DialogInput", java.awt.Font.ITALIC, 12), java.awt.SystemColor.activeCaption));
   /*jPanelModele.add(getJScrollPane());*/
   jPanelModele.setVisible(true);
  }
  return jPanelModele;
 }
 
 
 
 
 
 /**
  * This method initializes jPanel2  
  *  
  * @return javax.swing.JPanel  
  */
 private JPanel getJPanel2() {
  if (jPanel2 == null) {
   GridLayout gridLayout1 = new GridLayout();
   gridLayout1.setRows(2);
   gridLayout1.setColumns(1);
   jPanel2 = new JPanel();
   jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.SoftBevelBorder.LOWERED), "génerer le graphe", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("DialogInput", java.awt.Font.PLAIN, 12), java.awt.SystemColor.activeCaption));
   jPanel2.setVisible(true);
   jPanel2.setLayout(gridLayout1);
   jPanel2.add(getJPanel3(), null);
   /*jPanel2.add(getJPanel4(), null);*/
   /*jPanel2.add(getJPanel5(), null);*/
   
  }
  return jPanel2;
 }
 
 
 private JPanel getJPanel3() {
  if (jPanel3 == null) {
   
   jPanel3 = new JPanel();
   jPanel3.setLayout(null);
   jPanel3.add(getJButton(), null);
 
   }
 return jPanel3;
}
       
 private JButton getJButton() {
  if (jButton == null) {
   jButton = new JButton();
   jButton.setBounds(new Rectangle(80, 40, 221, 36));
   jButton.setText("génerer le graphe" );
   jButton.addActionListener(new EcoutBotton(this,jPanel7));
 
  }
  return jButton;
 }
 
 /**
  * This method initializes jSplitPane  
  *  
  * @return javax.swing.JSplitPane  
  */
 private JSplitPane getJSplitPane() {
  if (jSplitPane == null) {
   jSplitPane = new JSplitPane();
   jSplitPane.setLeftComponent(getJPanel1());
   jSplitPane.setRightComponent(getJPanel7());
  }
  return jSplitPane;
 }
 
 
          /*******************la classe ***********************/
          /**********************main*************************/
           
           
           
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Raccord de méthode auto-généré
  SwingUtilities.invokeLater(new Runnable() {
   public void run() {
    Interface thisClass = new Interface();
    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    thisClass.setVisible(true);
   }
  });
 }
 
 /**
  * This is the default constructor
  */
 public Interface() {
  super();
  initialize();
 }
 
 /**
  * This method initializes this
  *  
  * @return void
  */
 private void initialize() {
  this.setSize(780, 700);
  this.setContentPane(getJContentPane());
  this.setTitle("Géneration des scénarios d'attaque" );
 }
 
 
 
 
 
 /**
  * This method initializes jContentPane
  *  
  * @return javax.swing.JPanel
  */
 private JPanel getJContentPane() {
  if (jContentPane == null) {
   jContentPane = new JPanel();
   jContentPane.setLayout(new BorderLayout());          
   
   jContentPane.add( getJSplitPane(), BorderLayout.CENTER);
   
  }
   
  return jContentPane;
 }
 
}
 
 voila la class ecouteur associer au bouton
 
 
 
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
 
class EcoutBotton implements ActionListener
{
 JButton invite;
 JPanel contenu;
 JScrollPane dd;
 Interface ve;
 
 public EcoutBotton(Interface ve,JPanel contenu)
 {  
  this.contenu =contenu;
  this.ve = ve;
 }
 
 public void actionPerformed(ActionEvent e)
 {    
  ImageIcon ii = new ImageIcon("images.jpg" );
   
  dd = new JScrollPane(new JLabel(ii));
   
  dd.setBounds(20,20,350,250);
  contenu.add(dd);
  dd.revalidate();
   
}
 
}  
 
 
 
merci          
 

Reply

Marsh Posté le 14-04-2008 à 16:24:43   

Reply

Marsh Posté le 15-04-2008 à 09:05:58    

Citation :

ça ne marche pas je ne comprend rien
...
merci


 
"ça ne marche pas" ne nous permet pas de comprendre ton problème.
(tu as une erreur de compil ? une exception ? un message d'erreur)
 
Explique nous le comportement attendu, ce qui se passe vraiment.
Ensuite isole le problème et montres nous les quelques lignes de code qui semblent être à l'origine.
 
http://forum.hardware.fr/hfr/Progr [...] 0261_1.htm

Reply

Marsh Posté le 15-04-2008 à 14:51:38    

merci bidem de me faire cette remarque je la trouve intéressante, :jap:  
je vous explique mon problème
 
je compile ma class "EcoutBotton"  pas d'erreurs ,je compile  class "Interface"  (principale)  pas d'erreurs , j'exécute l'interface s'affiche sans aucun problème, là quand je clic sur le bouton rien n'apparait.
 
******voila le bouton à qui j'associe class EcoutBotton  ****  
 
private JButton getJButton() {
  if (jButton == null) {
   jButton = new JButton();
   jButton.setBounds(new Rectangle(80, 40, 221, 36));
   jButton.setText("génerer le graphe" );
   jButton.addActionListener(new EcoutBotton(this,jPanel7));
 
  }
  return jButton;
 }  
 
 
 
*********voila le JSplitPane associer à l'interface**********
 
 
/**
  * This method initializes jSplitPane  
  *  
  * @return javax.swing.JSplitPane  
  */
 private JSplitPane getJSplitPane() {
  if (jSplitPane == null) {
   jSplitPane = new JSplitPane();
   jSplitPane.setLeftComponent(getJPanel1());
   jSplitPane.setRightComponent(getJPanel7());
  }
  return jSplitPane;
 }  
 
 
 
*************voila la class EcoutBotton****************
 
 
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
 
class EcoutBotton implements ActionListener
{
 JButton invite;
 JPanel contenu;
 JScrollPane dd;
 Interface ve;
 
 public EcoutBotton(Interface ve,JPanel contenu)
 {  
  this.contenu =contenu;
  this.ve = ve;
 }
 
 public void actionPerformed(ActionEvent e)
 {    
  ImageIcon ii = new ImageIcon("images.jpg" );
   
  dd = new JScrollPane(new JLabel(ii));
   
  dd.setBounds(20,20,350,250);
  contenu.add(dd);
  dd.revalidate();
   
}
 
}  
 
 
merci ,j'espère c'est clair cette fois.

Reply

Marsh Posté le 15-04-2008 à 15:07:48    

vedoca a écrit :


 public EcoutBotton(Interface ve,JPanel contenu)


 
 [:delarue5]  
Manquerait pas une virgule ?

Reply

Marsh Posté le 15-04-2008 à 16:07:09    

quand je lance ton code, j'ai droit à une belle NullPointerException quand je clic sur le bouton.

 
Citation :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at test.testinterface.EcoutBotton.actionPerformed(EcoutBotton.java:23)
 at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
...

 

Pour la simple et bonne raison que contenu est null.

 

c'est initialisé lors de l'appel du constructeur "new EcoutBotton(this, jPanel7)"

 

Le problème est que quand tu appelle ça, jPanel7 n'est pas encode initialisé

 

=> l'origine de tout, c'est la méthode getJSplitPane()

Code :
  1. private JSplitPane getJSplitPane() {
  2.   if (jSplitPane == null) {
  3.    jSplitPane = new JSplitPane();
  4.    // init de la partie gauche
  5.    // C'est pendant cette init qu'on initie le bouton et qu'on lui passe en parametre la partie droire (jPanel7)
  6.    jSplitPane.setLeftComponent(getJPanel1());
  7.    // init de la partie droite avec jPanel7 => ci dessous jPanel7 était null pendant l'init du bouton
  8.    jSplitPane.setRightComponent(getJPanel7());
  9.   }
  10.   return jSplitPane;
  11. }
 

Pour corriger le tout il suffi d'inverser les 2 lignes qui posent pb


Message édité par Bidem le 15-04-2008 à 16:07:31
Reply

Marsh Posté le 16-04-2008 à 12:17:03    

bonjour bidem,
 
 
merci beaucoup bidem vous m'avez donnez un coup de main qui ma permet d'avancer en une fraction de second  
 
je sens  votre intelligence et votre bon intuition dans votre réponse,  encore merci  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed