gpt4 book ai didi

java - 如何在 java-gnome 中创建自定义信号?

转载 作者:搜寻专家 更新时间:2023-11-01 03:46:20 25 4
gpt4 key购买 nike

我正在尝试在我的 GTK+3 应用程序中的 java-gnome 中创建自定义信号,但我做不到。

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中没有类似的方式(基于源代码中没有类似结构的事实)。

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

  • 定义处理程序接口(interface)(#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);

内置的 Button 使用类似的东西通过添加 connect(Clicked handler)emitClicked() 来定义点击事件( source code )

关于java - 如何在 java-gnome 中创建自定义信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com