IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Java Swing eclipse : NullPointeur sur un getOnglet()


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Par défaut Java Swing eclipse : NullPointeur sur un getOnglet()
    Bonjour à tous,

    Chasse au nullPointeur, pour cela voici les classes en lien avec celui-ci...

    Une Ihm qui récupère les onglets dont le fameux onglets et sont getter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
     
    package ihm;
     
    import java.awt.FlowLayout;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.SwingConstants;
     
    import event.Affichage;
    import event.MonWindowAdapter;
    import ihm.onglets.Auteur;
    import ihm.onglets.Client;
    import ihm.onglets.Commande;
    import ihm.onglets.Editeur;
    import ihm.onglets.Livre;
    import ihm.onglets.Profil;
     
    public class Ihm extends JFrame 
    {
    	private static final long serialVersionUID = 1L;
     
    	private static Menu menu;
    	private static JTabbedPane onglets;
    	private static Livre ongletLivre;
    	private static Auteur ongletAuteur;
    	private static Client ongletClient;
    	private static Commande ongletCommande;
    	private static Editeur ongletEditeur;
    	private static Profil ongletProfil;
     
    	private JPanel panZoneClient;
    	private JPanel panHeader;
     
    	//============================================================
    	//constructeur
    	private Ihm() 
    	{
    		initIhm();
    	}
     
    	//initialisation de toute l'application
    	private void initIhm()
    	{
    		//evenement de la fenêtre
    		this.addWindowListener(new MonWindowAdapter(this));
    		//ajout du menu
    		Ihm.menu = new Menu(this);
    		//ajout des onglets
    		onglets = new JTabbedPane(SwingConstants.NORTH);
     
    		//onglets.addChangeListener(this);
     
    		ongletLivre = new Livre(this);
    		ongletAuteur = new Auteur(this);
    		ongletClient = new Client(this);
    		ongletCommande = new Commande(this);
    		ongletEditeur = new Editeur(this);
    		ongletProfil = new Profil(this);
     
    		onglets.addTab(Affichage.getRessource().getString("titreongletlivre"),ongletLivre);
    		onglets.addTab(Affichage.getRessource().getString("titreongletauteur"),ongletAuteur);
    		onglets.addTab(Affichage.getRessource().getString("titreongletclient"),ongletClient);
    		onglets.addTab(Affichage.getRessource().getString("titreongletcommande"),ongletCommande);
    		onglets.addTab(Affichage.getRessource().getString("titreongletediteur"),ongletEditeur);
    		onglets.addTab(Affichage.getRessource().getString("titreongletprofil"),ongletProfil);
    		onglets.setOpaque(true);
     
    		panHeader = new JPanel();
    		panHeader.setLayout(new FlowLayout());
     
    		//zone client
    		panZoneClient = (JPanel) this.getContentPane();
    		panZoneClient.setLayout(new FlowLayout());
     
    		panZoneClient.add(Ihm.onglets);
     
    		this.setJMenuBar(Ihm.menu);
     
    		//Changer la langue
    		event.Affichage.getChangerValeurMenu(Ihm.menu);
    	}
     
    	//============================================================
    	//instenciation
    	private static Ihm ihm;
    	public static Ihm getInstance()
    	{
    		if (ihm == null) {
    			ihm = new Ihm();
    		}
    		return ihm;
    	}
     
    	//============================================================
    	//Getter and setter
    	public static Livre getOngletLivre() {
    		return ongletLivre;
    	}
    	public static Auteur getOngletAuteur() {
    		return ongletAuteur;
    	}
    	public static Client getOngletClient() {
    		return ongletClient;
    	}
    	public static Commande getOngletCommande() {
    		return ongletCommande;
    	}
    	public static Editeur getOngletEditeur() {
    		return ongletEditeur;
    	}
    	public static Profil getOngletProfil() {
    		return ongletProfil;
    	}
    	public static JTabbedPane getOnglets() {
    		return onglets;
    	}
    	public static Menu getMenu() {
    		return menu;
    	}
    	public static Livre getLivre() {
    		return ongletLivre;
    	}
    	public static Auteur getAuteur() {
    		return ongletAuteur;
    	}
    	public static Client getClient() {
    		return ongletClient;
    	}
    	public static Commande getCommande() {
    		return ongletCommande;
    	}
    	public static Editeur getEditeur() {
    		return ongletEditeur;
    	}
    	public static Profil getProfil() {
    		return ongletProfil;
    	}
    }
    Maintenant une classe Menu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    package ihm;
     
    import java.awt.Toolkit;
     
    import javax.swing.ButtonGroup;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JRadioButtonMenuItem;
    import javax.swing.KeyStroke;
     
    import event.EcouteurChoixLangue;
    import event.MonEcouteur;
    import event.itemCRUD.ActionAjouter;
     
    public class Menu extends JMenuBar 
    {
    	private static final long serialVersionUID = 1L;
     
    	private JMenu mnuGestion;
    	private JMenuItem itmAjouter;
    	private JMenuItem itmModifier;
    	private JMenuItem itmSupprimer;
    	private JMenuItem itmQuitter;
    	private JMenu mnuAide; //« ? »
    	private JRadioButtonMenuItem optmFrancais;
    	private JRadioButtonMenuItem optmAnglais;
    	private JMenuItem itmAide; //sur l’interface graphique
    	private JMenuItem itnApropos; //de cette application
    	private ButtonGroup grpRadio;
     
    	//============================================================
    	//constructeur sans argument
    	public Menu(Ihm gestion) 
    	{
    		initMenu(gestion);
    	}
     
    	//méthode d'initialisation
    	private void initMenu(Ihm ihm)
    	{
    		mnuGestion = new JMenu();
    		mnuGestion.setMnemonic('G');
    		//ajouter
    		System.out.println(Ihm.getOnglets());
    		itmAjouter = new JMenuItem(new ActionAjouter(Ihm.getOnglets()));
    		itmAjouter.setAccelerator(KeyStroke.getKeyStroke('A', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    		mnuGestion.add(itmAjouter);
    		//modifier
    		itmModifier = new JMenuItem();
    		itmModifier.setAccelerator(KeyStroke.getKeyStroke('M', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    		mnuGestion.add(itmModifier);
    		//supprimer
    		itmSupprimer = new JMenuItem();
    		itmSupprimer.setAccelerator(KeyStroke.getKeyStroke('S', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    		mnuGestion.add(itmSupprimer);
    		//quitter
    		itmQuitter = new JMenuItem();
    		itmQuitter.addActionListener(new MonEcouteur(ihm));
    		itmQuitter.setAccelerator(KeyStroke.getKeyStroke('Q', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    		mnuGestion.add(itmQuitter);
    		//aide
    		mnuAide = new JMenu();
    		mnuAide.setMnemonic('A');
     
    		grpRadio = new ButtonGroup();
    		//français
    		optmFrancais = new JRadioButtonMenuItem();
    		//optmFrancais.setSelected(true);
    		optmFrancais.addActionListener(new EcouteurChoixLangue(this));
    		mnuAide.add(optmFrancais);
    		grpRadio.add(optmFrancais);
    		//anglais
    		optmAnglais = new JRadioButtonMenuItem();
    		optmAnglais.addActionListener(new EcouteurChoixLangue(this));
    		mnuAide.add(optmAnglais);
    		grpRadio.add(optmAnglais);
    		//sélectionner la langue par défaut selon le resource bundle
    		if (event.Affichage.getLangue().equals("fr"))
    		{
    			optmFrancais.setSelected(true);
    			optmAnglais.setSelected(false);
    		} else if (event.Affichage.getLangue().equals("en")) {
    			optmAnglais.setSelected(true);
    			optmFrancais.setSelected(false);
    		}
    		//séparator
    		mnuAide.insertSeparator(2);
    		itmAide = new JMenuItem();
    		itmAide.addActionListener(new MonEcouteur(ihm));
    		itmAide.addActionListener(new MonEcouteur(ihm));
    		itmAide.setAccelerator(KeyStroke.getKeyStroke('H', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    		mnuAide.add(itmAide);
    		//A propos
    		itnApropos = new JMenuItem();
    		itnApropos.addActionListener(new MonEcouteur(ihm));
    		itnApropos.addActionListener(new MonEcouteur(ihm));
    		itnApropos.setAccelerator(KeyStroke.getKeyStroke('Q', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    		mnuAide.add(itnApropos);
     
    		//ajouter les menu à la barre
    		this.add(mnuGestion);
    		this.add(mnuAide);
     
    		//Changer la langue du menu
    		event.Affichage.getChangerValeurMenu(this);
    	}
     
    	//==================================================
    	//Getter and setter
    	public JMenu getMnuGestion() {
    		return mnuGestion;
    	}
    	public void setMnuGestion(JMenu mnuGestion) {
    		this.mnuGestion = mnuGestion;
    	}
    	public JMenuItem getItmAjouter() {
    		return itmAjouter;
    	}
    	public void setItmAjouter(JMenuItem itmAjouter) {
    		this.itmAjouter = itmAjouter;
    	}
    	public JMenuItem getItmModifier() {
    		return itmModifier;
    	}
    	public void setItmModifier(JMenuItem itmModifier) {
    		this.itmModifier = itmModifier;
    	}
    	public JMenuItem getItmSupprimer() {
    		return itmSupprimer;
    	}
    	public void setItmSupprimer(JMenuItem itmSupprimer) {
    		this.itmSupprimer = itmSupprimer;
    	}
    	public JMenuItem getItmQuitter() {
    		return itmQuitter;
    	}
    	public void setItmQuitter(JMenuItem itmQuitter) {
    		this.itmQuitter = itmQuitter;
    	}
    	public JMenu getMnuAide() {
    		return mnuAide;
    	}
    	public void setMnuAide(JMenu mnuAide) {
    		this.mnuAide = mnuAide;
    	}
    	public JRadioButtonMenuItem getOptmFrancais() {
    		return optmFrancais;
    	}
    	public void setOptmFrancais(JRadioButtonMenuItem optmFrancais) {
    		this.optmFrancais = optmFrancais;
    	}
    	public JRadioButtonMenuItem getOptmAnglais() {
    		return optmAnglais;
    	}
    	public void setOptmAnglais(JRadioButtonMenuItem optmAnglais) {
    		this.optmAnglais = optmAnglais;
    	}
    	public JMenuItem getItmAide() {
    		return itmAide;
    	}
    	public void setItmAide(JMenuItem itmAide) {
    		this.itmAide = itmAide;
    	}
    	public JMenuItem getItnApropos() {
    		return itnApropos;
    	}
    	public void setItnApropos(JMenuItem itnApropos) {
    		this.itnApropos = itnApropos;
    	}
    }
    Une classe ActionCRUD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    package event.itemCRUD;
     
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.AbstractAction;
    import javax.swing.JTabbedPane;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
     
    public abstract class ActionCRUD extends AbstractAction 
    {	 
    	private static final long serialVersionUID = 1L;
    	protected ActionListener delegateAction;
     
    	public ActionCRUD(JTabbedPane tabbedPane, String nom) {
    		super(nom);
    		tabbedPane.addChangeListener(new ChangeListener() {
     
    			@Override
    			public void stateChanged(ChangeEvent e) {
    				updateAction(tabbedPane);
    			}
    		});
    		updateAction(tabbedPane); // il faut au moins l'appeler une fois pour la première fois (un onglet étant sélectionné par défaut)
    	}
     
    	protected void updateAction(JTabbedPane tabbedPane) {
    		Component selectedComponent = tabbedPane.getSelectedComponent();
    		delegateAction = getAction(selectedComponent);
    		setEnabled(delegateAction != null); 
    	}
     
    	protected abstract ActionListener getAction(Component component);
     
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		if ( delegateAction!=null ) {
    			delegateAction.actionPerformed(e);
    		}
    	}
     
    }
    Et pour finir une classe ActionAjouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    package event.itemCRUD;
     
    import java.awt.Component;
    import java.awt.event.ActionListener;
     
    import javax.swing.JTabbedPane;
     
    import event.Affichage;
     
    public class ActionAjouter extends ActionCRUD 
    {	 
    	private static final long serialVersionUID = 1L;
     
    	public ActionAjouter(JTabbedPane tabbedPane) {
    		super(tabbedPane,Affichage.getRessource().getString("ajouter"));
    	}
     
    	public ActionListener getAction(Component component) {
    		if ( component instanceof ItemAjoutable ) {
    			ItemAjoutable itemAjoutable = (ItemAjoutable) component;
    			return itemAjoutable.getAjoutItem();
    		}
    		return null;
    	}
    }
    Et maintenant la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    null //il vient du System.out.println... de la classe Menu
    Exception in thread "main" java.lang.NullPointerException
    	at event.itemCRUD.ActionCRUD.<init>(ActionCRUD.java:18)
    	at event.itemCRUD.ActionAjouter.<init>(ActionAjouter.java:15)
    	at ihm.Menu.initMenu(Menu.java:46)
    	at ihm.Menu.<init>(Menu.java:36)
    	at ihm.Ihm.initIhm(Ihm.java:48)
    	at ihm.Ihm.<init>(Ihm.java:39)
    	at ihm.Ihm.getInstance(Ihm.java:90)
    	at ihm.Lancer.charger(Lancer.java:21)
    	at ihm.Lancer.main(Lancer.java:13)
    Merci pour vos aides...

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Ihm.menu = new Menu(this);
    //ajout des onglets
    onglets = new JTabbedPane(SwingConstants.NORTH);
    Quand tu initialises Menu, onglets n'est pas encore affecté, donc null. Or l'initialisation du menu, en cascade, provoque la création des Actions, qui ont besoin de l'onglet pour l'être.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Par défaut
    Très logique ! Merci beaucoup

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Par défaut
    euh, j'ai un nouveau nullPointeur sur une méthode createJTableModel est-ce que je le pose ici ?

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Oui, tu peux. Les NPE, c'est toujours le même problème : l’initialisation. Il n'y a pas 36 raisons. Les principales étant

    • La non initialisation, évidemment (nulle part, on affecte de valeur à la variable) ;
    • l'ordre d'initialisation (le cas que tu avais)
    • la variable cachée. Exemple
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      public class Truc {
       
         private Machin variable;
       
         public Truc() {
       
               Machin variable = new Machin(); // la variable locale cache la variable de classe : on croit que la variable de classe est bien initialisée, mais pas du tout, parce qu'on a en initialise une autre.
       
         }
       
      }
    • ce que j'appellerais la confusion de variables. J'ai une classe A et une classe B, qui ont toutes les deux une variable de même nom. On initialise celle d'une instance de classe A, mais on invoque celle d'une instance de la classe B, qui évidemment n'est pas initialisée.
    • Après, il y a toutes les conséquences d'appel de méthode incorrect (recherche d'une valeur dans une map avec une clef incorrecte par exemple).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Par défaut
    Ah je vois, elle doit être probablement caché alors car je l'a déclare juste avant voici la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    @Override
    	protected JTableModel createTableModel() {
    		
    		if (!Requete.resultVectorLivre().isEmpty()) {
    			Requete.resultVectorLivre();
    		} else {
    			JOptionPane.showMessageDialog(null, Affichage.getRessource().getString("messagetablevide"));
    		}
    		
    		Vector<String> vecteurColumnName = new Vector<String>();
    		vecteurColumnName.addElement(Affichage.getRessource().getString("id"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("titre"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("isbn"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("image"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("sujet"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("description"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("prixneuf"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("prixoccasion"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("prixnumerique"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("quantite"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("langue"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("telechargement"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("anneeparution"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("editeur"));
    		vecteurColumnName.addElement(Affichage.getRessource().getString("genre"));
    		
    	this.tableModel.setColumnName(vecteurColumnName);
    		this.tableModel = tableModel;
    		this.tableModel.fireTableStructureChanged();
    		this.tableModel.fireTableDataChanged();
    		
    		return null;
    	}
    La classe AbstactOnglet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    package event.itemCRUD;
    
    import java.awt.BorderLayout;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    
    import metier.JTableModel;
    
    public abstract class AbstractOnglet extends JPanel implements ItemAjoutable, ItemSupprimable {
    	
    	private static final long serialVersionUID = 1L;
    	protected final JTableModel tableModel;
    	protected final JTable jtable;
    	private final List<ActionEnabled> actionEnabled;
    
    	public AbstractOnglet() {
    		super(new BorderLayout());
    		actionEnabled = new ArrayList<>();
    		tableModel = this.createTableModel();
    		jtable = new JTable(tableModel);
    		jtable.getSelectionModel().addListSelectionListener(e-> changeTableSelection());
    		add( new JScrollPane(jtable));
    	}
    
    	protected abstract JTableModel createTableModel();
    
    	@Override
    	public void addSupprimeEnabled(ActionEnabled actionEnabled) {
    		if ( actionEnabled!=null && !this.actionEnabled.contains(actionEnabled) ) {
    			this.actionEnabled.add(actionEnabled);
    			actionEnabled.setActionEnabled(jtable.getSelectionModel().getMinSelectionIndex()!=-1);
    		}
    	}
    
    	@Override
    	public void removeSupprimeEnabled(ActionEnabled actionEnabled) {
    		this.actionEnabled.remove(actionEnabled);
    	}
    
    	protected void changeTableSelection() {
    		boolean enabled = jtable.getSelectionModel().getMinSelectionIndex()!=-1;
    		for(ActionEnabled action : actionEnabled) {
    			action.setActionEnabled(enabled);
    		}
    	}
    
    }
    Le message est au niveau de la ligne en évidence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            this.tableModel.setColumnName(vecteurColumnName);
            tableModel = this.createTableModel();

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "Freeze" d'une application Java/SWING sur fedora 10
    Par logdrop dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 27/03/2009, 16h26
  2. Votre avis sur notre application Java/Swing
    Par yciabaud dans le forum AWT/Swing
    Réponses: 30
    Dernier message: 02/07/2008, 22h54
  3. java swing sur netbeans
    Par yousyas dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 11/02/2008, 00h27
  4. [Eclipse][Java]Problème de compilation sur CTRL+S
    Par ZeKiD dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 27/05/2004, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo