2017-12-24 8 views
0

Ich erstelle ein einfaches Fenster, das ein Textfeld und eine Schaltfläche enthalten muss.Die Schaltfläche, die ich innerhalb der ActionListener-Klasse erstellt habe, kann nicht verwendet werden

public class Find_Suspect_Window extends JFrame{ 

    private JPanel panel=new JPanel(); 
    private JTextField findName = new JTextField("Enter the name"); 
    private JButton findButton = new JButton("Find"); 

    public Find_Suspect_Window() { 

     panel.add(findName); 
     panel.add(findButton); 

     this.setContentPane(panel); 

     FindListener f = new FindListener(); 
     mouse m = new mouse(); 
     findName.addMouseListener(m); 
     findButton.addActionListener(f); 


     this.setVisible(true); 
     this.setSize(300, 100); 
     this.setResizable(false); 
     this.setLocationRelativeTo(null); 
     this.setTitle("Find Suspect"); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


    } 

} 

Danach habe ich eine Klasse in der gleichen Klasse Datei erschaffe, die implementiert Action so kann ich die Tasten etwas tun.

class FindListener implements ActionListener{ 


    public void actionPerformed(ActionEvent e){ 

     if(e.getSource() == findButton) { 

      String n = findName.getText(); 

     } 

    } 
} 

Ich erhalte eine Fehlermeldung hier die besagt, dass findButton nicht auf eine Variable und Findname aufgelöst werden kann nicht aufgelöst werden. Ich verstehe, dass sie nicht Teil derselben Klasse sind, aber ich muss diese Schaltfläche und dieses Feld verwenden, um alles Notwendige zu tun, damit die Schaltfläche richtig funktioniert.

Habe ich etwas übersehen? Gibt es etwas, das ich ändern oder hinzufügen muss, damit es funktioniert?

Antwort

0

Wenn Sie alles genau beschrieben, als keine Probleme sein sollten. Siehe das Beispiel unten:

class A extends JFrame { 

    private JButton button = new JButton(); 
    private int a; 

    { 
     button.addActionListener (new B()); 
    } 

    class B implements ActionListener { 

     @Override 
     public void actionPerformed (ActionEvent e) { 
      if (e.getSource() == button) { 
       System.out.println (a); 
      } 
     } 

    } 

} 
+0

Nun ja, deshalb habe ich es so gemacht. Ich erinnere mich, dass ich das letztes Jahr für eine ähnliche Aufgabe gemacht habe. Aber aus irgendeinem Grund bekomme ich jetzt diesen Fehler. Kann nicht herausfinden, was falsch ist. –

-1

Macht nichts. Ich habe die Klasse außerhalb der Grenzen der Hauptklasse erstellt. Deshalb hat es die Variablen nicht erkannt.

Verwandte Themen