2016-03-23 19 views
0

GUI'mn iki tarafını oluşturmak için kullanılan 2 ayrı sınıfa sahibim. Bu sınıflardan bir tanesinde MainGUI, jb1 adında bir JButton'a sahiptir. JButton'a tıklandığında bunu yapmak için bu düğmeye bir ActionListener atamaya çalışıyorum. birkaç JLabels'in içerikleri güncellenir. Ben aşağıdaki kodu çalıştılarJava'da tüm ActionListener işlevlerini gerçekleştiren bir sınıfı nasıl oluşturabilirim?

,

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. 


     } 

    } 

Ancak hiçbir şey olmuyor. Aslen sharkPanel.jlz.setText(sharkname) yaptım.

Ancak hiçbir şey olmamıştı, bunun nedeni ArrayList dizesini doğru bir şekilde dönüştürmediğim için olabileceğini düşündüm. Bu yüzden "Test" koyarak test ettim ve hiçbir şey olmuyor.

2 ilgili GUI sınıfına bir addController yöntemi eklemeyi denedim ve hiçbir şey olmuyor.

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

} 

Ama yine hiçbir şey olmuyor, bu yüzden gibi, ben bir MouseListener kullanarak düşündüğünü ama bu sadece yanlış yapıyorum görmüyorum yapılabilir biliyorum.

GÜNCELLEME

Bunların hepsi getSearchBtn yapmasıdır. düğme doğru başlatıldı

bu eklersiniz MainGUI class yılında

private static JButton jb1; 

    jb1=new JButton("    Search    "); 

public static JButton getSearchBtn() { 

    return jb1; 
} 
+2

Do ** değil ** bunun için MouseListener kullanın. – Jonah

+0

kullanılmaları amaçlanmadıklarından dolayı, 'MainGUI.getSearchBtn() ', ne gerektiğini düşündüğünüzü döndürmediğini tahmin edeceğim. –

+1

Görünüşe göre 'static' seçeneğine güveniyorsunuz ki bu iyi bir fikir değil. Sorununuzu gösteren [çalıştırılabilir bir örnek] (https://stackoverflow.com/help/mcve) sağlamayı düşünün. Bu bir kod dökümü değil, yaptığınız sorunun altını çizen, yaptığınız şeyin bir örneğidir. Bu daha az karışıklık ve daha iyi yanıtlar ile sonuçlanacaktır – MadProgrammer

cevap

2

,

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

sonra/jb1 ait actionPerformed-method çağırmak mümkün jb1 düğmesinden sonraki ardından değişikliklere yukarıdaki yapmak

örneğini ..addActionListener (yeni Denetleyici (.....));

Ve kaldırmak

MainGUI.getSearchBtn().addActionListener(this); from Controller class. 
İlgili konular