2016-03-23 4 views
0

Ich habe 2 separate Klassen, die verwendet wird, um separate Seiten meiner GUI zu konstruieren. In einer dieser Klassen hat MainGUI einen JButton namens jb1. Ich habe versucht, dieser Schaltfläche einen ActionListener zuzuweisen, um es so zu machen, wenn auf die JButton geklickt wird. Mehrere JLabels haben ihren Inhalt aktualisiert.Wie erstelle ich eine Klasse, die alle meine ActionListener-Funktionen in Java ausführt?

ich den Code unten versucht haben,

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.ArrayList; 
import api.jaws.Jaws; 


public class Controller implements ActionListener{ 

    private MainGUI maingui; 
    private Sharkpanel sharkPanel; 
    private String sharkname; 
    private static Jaws jaws =new Jaws("XyP0D75oRCGrLE78","x47ka5jmOGaJ2zvw"); 
    static ArrayList<String> sharknamelist=new ArrayList<String>(); 


    public Controller(MainGUI maingui,Sharkpanel sharkPanel){ 

     this.maingui = maingui; 
     this.sharkPanel = sharkPanel; 

     MainGUI.getSearchBtn().addActionListener(this); 

     sharknamelist.addAll(jaws.getSharkNames()); 

     for (String s: sharknamelist){ 

      sharkname += s+"\t"; 

     } 
    } 

      public void actionPerformed(ActionEvent e){ 

       sharkPanel.jlz.setText("Test"); 

      //6 more Labels. 


     } 

    } 

jedoch passiert nichts. Ich hatte ursprünglich sharkPanel.jlz.setText(sharkname) getan.

Aber nichts ist jemals passiert, ich dachte, dass es vielleicht daran liegt, dass ich die ArrayList nicht richtig in String konvertiert habe. Also teste ich es mit "Test" und nichts passiert.

Ich habe versucht, eine AddController-Methode in die 2 jeweiligen GUI-Klassen hinzufügen und nichts passiert. Wie so,

public void addController(Controller controller){ 
    control = controller; 
    jb1.addActionListener(control); 

} 

Aber immer noch nichts passiert, ich erwäge einen Mouselistener verwenden, aber ich weiß, das ich sehe nur getan werden kann, nicht, was ich falsch mache.

UPDATE

Das ist alles getSearchBtn ist.

private static JButton jb1; 

    jb1=new JButton("    Search    "); 

public static JButton getSearchBtn() { 

    return jb1; 
} 
+2

Do ** ** keine Mouselistener für diese. Das ist nicht so, wie sie verwendet werden sollen – Jonah

+0

Ich werde raten, dass 'MainGUI.getSearchBtn()' nicht zurückgibt, was Sie denken, dass es sollte. –

+1

Es scheint, dass Sie sich auf 'statische' verlassen, was keine gute Idee ist. Ziehen Sie ein [runnable-Beispiel] (https://stackoverflow.com/help/mcve) in Betracht, das Ihr Problem veranschaulicht. Dies ist kein Code-Dump, sondern ein Beispiel dafür, was Sie tun, um das Problem zu verdeutlichen, das Sie haben. Dies führt zu weniger Verwirrung und besseren Antworten – MadProgrammer

Antwort

2

In Ihrem MainGUI class,

diese Erweiterung,

jb1.addActionListener(new Controller(.....)); 

nach Taste richtig initialisiert/instanziiert

über Änderungen zu tun, dann nach jb1 Taste können actionPerformed-method von JB1 nennen ..addActionListener (neuer Controller (.....)) ;.

und entfernen,

MainGUI.getSearchBtn().addActionListener(this); from Controller class. 
Verwandte Themen