如何在JavaGNOME中创建自定义信号?

如何在JavaGNOME中创建自定义信号?,java,gtk3,Java,Gtk3,我试图在我的GTK+3应用程序中的javagnome中创建自定义信号,但我不能 import org.gnome.gtk.CheckButton; public class MyCheckButton extends CheckButton { // how can I add a cutom signal for this class // fos example: the signal that has "my-signal" name. } 我怎么做 我可以用pyth

我试图在我的
GTK+3
应用程序中的
javagnome
中创建自定义信号,但我不能

import org.gnome.gtk.CheckButton;

public class MyCheckButton extends CheckButton {

    // how can I add a cutom signal for this class
    // fos example: the signal that has "my-signal" name.
}
我怎么做

我可以用python来做

class MyCheckButton(Gtk.CheckButton):
    __gsignals__ = {
        'my_signal': (GObject.SIGNAL_RUN_FIRST, None,
                      (int,))}
abc = MyCheckButton()
abc.connect("my-signal", print)
abc.emit("my-signal", 543)
我在网上搜索过,但什么也没找到


谢谢。

我认为Java中没有类似的方法(基于源代码中没有类似结构的事实)

但您可以通过以下方式实现自己的处理程序:

  • 定义处理程序接口(#1)
  • 添加连接方法(#2,#3)
  • 添加发射方法(#4)
示例代码:

public class MyCheckButton extends CheckButton {

    // ...

    private MySignalHandler handler; // #2

    public interface MySignalHandler {  // #1
        public void onMySignal(int value);
    }

    public void connect(MySignalHandler handler) {  // #3
        this.handler = handler;
    }

    public void emitMySignal(int value) {  // #4
        if (handler == null) return;
        handler.onMySignal(value);
    }

}
然后,您可以以与其他事件相同的方式连接和发射

MyCheckButton a = new MyCheckButton();

a.connect(new MyCheckButton.MySignalHandler() {
  public void onMySignal(int value) {
    System.out.println(value);
  }
});

a.emitMySignal(10);

内置的
按钮
通过添加
connect(Clicked handler)
emitClicked()
()

请编辑您的问题,使其包含一个与您遇到的问题类似的事件,并解释要在何处添加自定义信号。@Progman,我编辑了我的问题,您可以再次检查。我想那个按钮必须实现。单击,这在中进行了描述