Codename 对话框中按钮的不同 class 一组动作事件
Codename One set action event from different class for button in dialog
我有一个 Android 应用程序,里面有一个对话框和几个按钮。
我想为不同的目的重用该对话框,并寻找一种从单独的 class 调用按钮并为其定义操作事件的方法。
创建测试 class,我成功地为表单内的按钮定义了一个动作事件,但同样的代码对对话框内的按钮不起作用,我无法理解围绕为什么它不适用于对话框。
下面是我已有的。任何建议,将不胜感激。
public Class One {
Test test = new Test();
test.testOne(); // this is working : button prints
test.testTwo(); // this is not working : button does not print
buttonTest = test.getTestButton();
buttonTest.setText("Hello World"); // not working for a button in a dialog
buttonTest.addActionListener(l-> { // prints when the button in a Form
System.out.println("try"); // does not print when the button is in a dialog
});
}
public class Test {
Dialog dialog = new Dialog();
Form form = new Form();
Button button;
public void testOne() {
button = new Button("Test");
form.add(button);
form.show();
}
public void testTwo() {
button = new Button("Testing");
dialog.add(button);
dialog.show();
}
public Button getTestButton () {
return button;
}
}
您在显示表单和对话框后添加动作侦听器。这对表单来说不是问题,因为表单显示方法将继续。但是 dialogs show()
方法会阻塞。
两种解决方案:
在代码中将侦听器绑定移动到更高的位置(在节目之前),这将是一个问题,因为该按钮尚不存在,因此您需要进行一些重构。
将对话框中的 show()
调用更改为 showModless()
我有一个 Android 应用程序,里面有一个对话框和几个按钮。
我想为不同的目的重用该对话框,并寻找一种从单独的 class 调用按钮并为其定义操作事件的方法。
创建测试 class,我成功地为表单内的按钮定义了一个动作事件,但同样的代码对对话框内的按钮不起作用,我无法理解围绕为什么它不适用于对话框。
下面是我已有的。任何建议,将不胜感激。
public Class One {
Test test = new Test();
test.testOne(); // this is working : button prints
test.testTwo(); // this is not working : button does not print
buttonTest = test.getTestButton();
buttonTest.setText("Hello World"); // not working for a button in a dialog
buttonTest.addActionListener(l-> { // prints when the button in a Form
System.out.println("try"); // does not print when the button is in a dialog
});
}
public class Test {
Dialog dialog = new Dialog();
Form form = new Form();
Button button;
public void testOne() {
button = new Button("Test");
form.add(button);
form.show();
}
public void testTwo() {
button = new Button("Testing");
dialog.add(button);
dialog.show();
}
public Button getTestButton () {
return button;
}
}
您在显示表单和对话框后添加动作侦听器。这对表单来说不是问题,因为表单显示方法将继续。但是 dialogs show()
方法会阻塞。
两种解决方案:
在代码中将侦听器绑定移动到更高的位置(在节目之前),这将是一个问题,因为该按钮尚不存在,因此您需要进行一些重构。
将对话框中的
show()
调用更改为showModless()