Problème de scope comment résoudre?
bonjour,
j'ai ce programme pioché sur une formation que je n'arrive pas à faire fonctionner :
Code:
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
|
package com.formulaire;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Fenetre extends JFrame {
private JPanel container = new JPanel();
private JLabel label = new JLabel("Une ComboBox");
public Fenetre() {
this.setTitle("Animation");
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
container.setBackground(Color.white);
container.setLayout(new BorderLayout());
String tab[] = {"Option 1","Option 2","Option 3","Option 4","Option 5"};
JComboBox combo = new JComboBox(tab);
combo.setSelectedIndex(1);
combo.addItemListener(new ItemState());
combo.addActionListener(new ItemAction());
combo.setPreferredSize(new Dimension(100, 20));
combo.setForeground(Color.blue);
JPanel top = new JPanel();
top.add(label);
top.add(combo);
container.add(top, BorderLayout.NORTH);
this.setContentPane(container);
this.setVisible(true);
}
//classe interne qui implémente ItemListener;
class ItemState implements ItemListener{
public void itemStateChanged(ItemEvent e){
System.out.println("evenement declenche sur : " + e.getItem() + " " + e.getStateChange());
}
}
class ItemAction implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("ActionListener : action sur " + combo.getSelectedItem());
}
}
} |
voilà j'ai une erreur au niveau du combo.getSelectedItem(), comment la classe interne peut accéder à combo?