我正在尝试JAVA swing,这有助于创建GUI应用程序。所以,我有一个名为MainFrame.java的类,就像控制器类一样。 在bar.java中,当调用'actionPerformed'事件并且控件转移到MainFrame.java时,调用方法tb.setStringListener。我无法通过实现接口来理解,如何转移控件? 接口在这里的重要性是什么?请帮助谢谢。
代码:
Main.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Pavan-Kumar
*/
public class Main {
public static void main(String[] args) {
MainFrame f = new MainFrame();
}
}
MainFrame.java
public class MainFrame {
bars t ;
public MainFrame() {
t = new bars();
t.setStringListener(new StringListener() {
@Override
public void acceptString(String t) {
System.out.println( t + " Hey I am inside tbe MainFrame");
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
}
StringListener.java
public interface StringListener {
public void acceptString(String t);
}
bars.java
public class bars {
private StringListener sl;
void setStringListener(StringListener l) {
this.sl = l;
actionPerformed();
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public void actionPerformed( ) {
sl.acceptString("Hey .....!");
}
}
字符串如何“嘿......!”传递给MainFrame.java 输出:嘿......!嘿,我在MainFrame中
答案 0 :(得分:0)
仅仅因为您实现了界面而未传输控件。控制权是专门转移的,因为你这样做了。
hb.addActionListener(this);
bye.addActionListener(this);
实现接口只是告诉编译器该类是ActionListener
的实现,并且您可以在需要ActionListener
的任何地方使用该类的实例。单击Swing按钮时,它们会显示一个列表ActionListener
,并调用每个actionPerformed
方法。剩下的就是通过调用ActionListener
给出按钮addActionListener
。界面的美妙之处在于按钮不知道或不关心ActionListener
实际上是什么;它需要知道的是它是ActionListener
并且它有actionPerformed
方法。