Compile Fehler beim Hinzufügen von Action zu Array erstellt GUI
-
22-09-2019 - |
Frage
Ich hatte eine riesige Datei für diese GUI Erstellung und ich habe es verkürzt durch Verwendung von Arrays. Ich versuche, eine Action hinzufügen, aber wenn die Arrays hinzugefügt werden und ich erhalte die folgenden Fehler:
/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
Was mache ich falsch? Gibt es einen einfacheren Weg, sich selbst zu diagnostizieren (wie ein Editor mit integriertem Syntaxführer)?
Hier ist mein 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) {
}
Lösung
Sie müssen Ihre GUI-Klasse machen Action implementieren, indem
public class GUI extends JFrame
public class GUI extends JFrame implements ActionListener
Andere Tipps
Sie müssen nur die Header-Datei importieren .....
import java.awt.event.ActionListener;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow