Je suis en train de construire un projet pour l'école. Il est une liste avec quelques zones de liste déroulante qui ont un effet sur elle. Pour l'instant je suis en train de construire l'interface et la mise en œuvre plus tard utilitaire. Voici le code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class Grafica {
static IUG iug = new IUG("Proiect"); //fereastra aplicatiei
static AAL ascultLista = new AAL(); //ascultatorul selectiei in lista
static AEA ascultOpt = new AEA(); //ascultatorul listelor ascunse
static class IUG extends JFrame {
JPanel optiuni = new JPanel(new GridLayout(3,1));
JList lista;
JComboBox comboDist, comboProd, comboTip;
IUG(String titlu) {
super(titlu);
Container cp = getContentPane();
//marimea ferestrei este setata pe baza rezolutiei ecranului
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
setSize((int)width/4,(int)height/4);
setLocation((int)width/3,(int)height/3);
cp.setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //se inchide programul daca inchidem fereastra
String luni[] = {"Ianuarie", "Februarie", "Martie", "Aprilie",
"Mai", "Iunie", "Iulie", "August", "Septembrie",
"Octombrie", "Noiembrie", "Decembrie"};
lista = new JList(luni);
lista.setBorder(BorderFactory.createTitledBorder("Lista produselor"));
//lista.setSelectModel(new DefaultListSelectionModel());
//lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
lista.addListSelectionListener(ascultLista);
JScrollPane scroll = new JScrollPane(lista); //crearea panoului cu produsele aferente
cp.add(scroll, BorderLayout.WEST);
// crearea unui label unde se descriu produsele
JLabel descriere = new JLabel();
descriere.setBorder(BorderFactory.createTitledBorder("Descrierea produselor"));
cp.add(descriere, BorderLayout.SOUTH);
//Se creeaza listele ascunse ale optiunilor
String tipuri[] = {"LED", "Neon", "Clasice", "Economice"};
String distribuitori[] = {"EMAG", "Flanco", "Altex"};
String producatori[] = {"Philips", "Star-Light", "TP-link"};
comboTip = new JComboBox(tipuri);
comboTip.setBorder(BorderFactory.createTitledBorder("Tipuri becuri"));
comboTip.addItemListener(ascultOpt);
optiuni.add(comboTip);
comboDist = new JComboBox(distribuitori);
comboDist.setBorder(BorderFactory.createTitledBorder("Distribuitori"));
comboDist.addItemListener(ascultOpt);
optiuni.add(comboDist);
comboProd = new JComboBox(producatori);
comboProd.setBorder(BorderFactory.createTitledBorder("Producatori"));
comboProd.addItemListener(ascultOpt);
optiuni.add(comboProd);
cp.add(optiuni,BorderLayout.EAST);
setVisible(true);
}
}
static class AAL implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e) {
JList sursa = (JList)e.getSource();
Object selectie[] = sursa.getSelectedValues();
StringBuffer buff = new StringBuffer();
for(int i = 0; i < selectie.length; i++)
buff.append(selectie[i].toString() + " ");
iug.descriere.setText(buff.toString());
}
}
static class AEA implements ItemListener {
public void itemStateChanged(ItemEvent e) {
iug.descriere.setText(e.getItem().toString());
}
}
public static void main(String args[]) {
}
}
Mais quand je le lance, il me montre ceci:
Grafica.java:76: error: cannot find symbol
iug.descriere.setText(buff.toString());
^
symbol: variable descriere
location: variable iug of type IUG
Grafica.java:82: error: cannot find symbol
iug.descriere.setText(e.getItem().toString());
^
symbol: variable descriere
location: variable iug of type IUG
Note: Grafica.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Grafica.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
Toute aide est appréciée. Je ne peux pas vraiment comprendre ce que je fait de mal, même après de nombreuses recherches sur Google.
Que la référence à descriere
manque (ne peut pas trouver le symbole iug.descriere ), puisque vous définissez et créez JLabel descriere
dans le consturctor seulement au IUG(String titlu)
lieu d' en faire un attribut de classe (comme lista
par exemple). Il a la mauvaise portée .
Si vous utilisez un IDE resonable il mettra en évidence la question (bien, le mien a fait) sans qu'il soit nécessaire de compiler explicitement avant d'exécuter en elle.