J'ai eu un énorme fichier pour créer cette interface graphique et je l'ai raccourci en utilisant des tableaux. Je suis en train d'ajouter un ActionListener mais quand les tableaux sont ajoutés et je reçois les erreurs suivantes:Erreur de compilation lors de l'ajout d'ActionListener à l'interface graphique créée par Array
/tmp/jc_3531/GUI.java:60: addActionListener(java.awt.event.ActionListener) in javax.swing.AbstractButton cannot be applied to (GUI)
nButtons[c].addActionListener(this);
^
/tmp/jc_3531/GUI.java:69: cannot find symbol
symbol : method addActionListener(GUI)
location: class javax.swing.JLabel
labels[c].addActionListener(this);
^
/tmp/jc_3531/GUI.java:78: addActionListener(java.awt.event.ActionListener) in javax.swing.JTextField cannot be applied to (GUI)
fields[c].addActionListener(this);
^
/tmp/jc_3531/GUI.java:90: addActionListener(java.awt.event.ActionListener) in javax.swing.AbstractButton cannot be applied to (GUI)
sButtons[c].addActionListener(this);
^
4 errors
Qu'est-ce que je fais mal? Existe-t-il un moyen plus facile de s'auto-diagnostiquer (comme un éditeur avec un guide de syntaxe intégré)?
Voici mon code
// GUI with navigation amd file manipulation buttons
import javax.swing.*; // provides basic window features
import java.awt.event.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.text.NumberFormat;
public class GUI extends JFrame
{
private Inventory inv;
private int currentDisplay = 0;
private JPanel nButtonJPanel;
private String nNames[]={"Load","Add","Modify","Delete","Search","Save"};
private JButton nButtons[];
private JPanel labelJPanel;
private String labeled[]={"Item ID","Name","Rating","# in Stock","Price","Inventory Value",
"Restocking Fee (5%)","Inventory Value with Fee","Total Value with Fee (all DVD's)"};
private JLabel labels[];
private JPanel fieldJPanel;
private String fieldsBlank[]={"","","","","","","","",""};
private JTextField fields[];
private JPanel sButtonJPanel;
private String sNames[]={"First","Prev","","Next","Last"};
private JButton sButtons[];
// LabelFrame constructor adds JLabels to JFrame
public GUI()
{
super("Inventory Program v.5");
setLayout(new BorderLayout()); // set frame layout
// initialize values
RatedDVD d1 = new RatedDVD(1, "One Flew Over The Cuckoo's Nest", 3, 9.99, "PG");
RatedDVD d2 = new RatedDVD(2, "The Matrix", 1, 13.01, "PG13");
RatedDVD d3 = new RatedDVD(3, "Se7en", 7, 11.11, "R");
RatedDVD d4 = new RatedDVD(4, "Oceans Eleven", 11, 9.02, "PG13");
RatedDVD d5 = new RatedDVD(5, "Hitch Hikers Guide to the Galaxy", 42, 10.00, "G");
RatedDVD d6 = new RatedDVD(6, "The Invisible Man", 0, 4999.59, "G");
// create inv and enter values
inv = new Inventory();
inv.add(d1);
inv.add(d2);
inv.add(d3);
inv.add(d4);
inv.add(d5);
inv.add(d6);
inv.sort();
//make nButtons
nButtonJPanel.setLayout(new GridLayout(1, nNames.length, 5, 5));
nButtons=new JButton[nNames.length];
for(int c=0;c<nButtons.length;c++){
nButtons[c]=new JButton(nNames[c]);
nButtons[c].addActionListener(this);
nButtonJPanel.add(nButtons[c]); }
add(nButtonJPanel, BorderLayout.NORTH);
//make labels
labelJPanel.setLayout(new GridLayout(labeled.length, 1));
labels=new JLabel[labeled.length];
for(int c=0;c<labels.length;c++){
labels[c]=new JLabel(labeled[c]);
labels[c].addActionListener(this);
labelJPanel.add(labels[c]);}
add(labelJPanel, BorderLayout.WEST);
//make fields
fieldJPanel.setLayout(new GridLayout(fieldsBlank.length, 1));
fields=new JTextField[fieldsBlank.length];
for(int c=0;c<fields.length;c++){
fields[c]=new JTextField(fieldsBlank[c],28);
fields[c].addActionListener(this);
fields[c].setEditable(false);
fieldJPanel.add(fields[c]); }
populate(currentDisplay);
add(fieldJPanel, BorderLayout.EAST);
//make sButtons
sButtonJPanel.setLayout(new GridLayout(1, sNames.length, 5, 5));
sButtons=new JButton[sNames.length];
Icon dvd50 = new ImageIcon(getClass().getResource("dvd50.jpg"));
for(int c=0;c<sButtons.length;c++){
sButtons[c]=new JButton(sNames[c]);
sButtons[c].addActionListener(this);
sButtonJPanel.add(sButtons[c]);}
sButtons[2].setIcon(dvd50);
add(sButtonJPanel, BorderLayout.SOUTH);
}// end method
public void populate(int currentDisplay)
{
NumberFormat nf = NumberFormat.getCurrencyInstance();
fields[0].setText(String.valueOf(inv.get(currentDisplay).getItem()));
fields[1].setText(inv.get(currentDisplay).getName());
fields[2].setText(inv.get(currentDisplay).getRating());
fields[3].setText(String.valueOf(inv.get(currentDisplay).getUnits()));
fields[4].setText(String.valueOf(nf.format(inv.get(currentDisplay).getPrice())));
fields[5].setText(String.valueOf(nf.format(inv.get(currentDisplay).value())));
fields[6].setText(String.valueOf(nf.format(inv.get(currentDisplay).fee())));
fields[7].setText(String.valueOf(nf.format(inv.get(currentDisplay).feeValue())));
fields[8].setText(String.valueOf(nf.format(inv.value())));
}
public void actionPerformed(ActionEvent e) {
}
Dang je viens de trouver que sur un dernier fossé deuxième recherche Google. Cool! Merci! – gooddadmike
Ou mieux, utilisez une classe interne anonyme. –