java - 如何以编程方式“设置”对话框的所有参数,例如“对话框标题”,“确定文本”等,而没有使用字符串文字作为参数?

原文 标签 java dialog actionlistener codenameone anonymous-class

这更多的是一个与编程风格相关的问题,而不是一个与功能相关的问题。
我看到的所有创建codenameone对话框的示例如下:

.
.
import com.codename1.ui.Display;
import com.codename1.ui.Form;
import com.codename1.ui.Dialog;
import com.codename1.ui.Button;
.
.
// Create a button
Button myButton = new Button("Click Me");

// Create an action listener for the button
myButton.addActionListener((e) -> Dialog.show("Dialog title", "Dialog text", "OK", null));
.
.
.      

上面的Dialog.show()命令包含4个参数。但是,如果可能,我希望删除它们,并按照以下样式“设置”它们:
Dialog myDialog = new Dialog();       // Empty parameter list
myDialog.setTitle("Dialog Title");    // 1st parameter
myDialog.set???   // How can I 'set' "Dialog text" (2nd parameter) like I just did with Dialog Title?
myDialog.set???   // How can I 'set' "OK" (3rd parameter) like I just did with Dialog Title?
myDialog.set???   // How can I 'set' null (4th parameter) like I just did with Dialog Title?

// ...and then just do something like ...

myButton.addActionListener((e) -> myDialog.show());   // empty parameter list

如何以与使用dialog.setTitle()相同的方式“设置”对话框文本、确定按钮文本等?其他参数是否有相应的setter?
如有任何帮助,将不胜感激。

最佳答案

除了show (String title, String text, String okText, String cancelText)之外,setTitle()中使用的参数没有设置器。您可以在official docs中搜索,除了方法show,没有对textokTextcancelText的其他引用。必须为方法的重载设置所有参数,这就是api的生成方式。
如果你想做额外的工作来获得更多的setter,你可以像@james h建议的那样(我不知道为什么我一开始不这么想):创建一个派生类。我确信show的参数没有任何对应的字段,因此在派生类(例如show ())中,可以添加字段OkCancelDialogtextokText,为这些字段创建默认构造函数和参数化构造函数以及getter/setter,再加上使用这些字段的cancelText方法。然后你只需要用show来改变Dialog

public class OkCancelDialog extends Dialog {
    private String text=null, okText=null, cancelText=null;

    public OkCancelDialog (String text, String okText, String cancelText){
        super ();
        this.text = text;
        this.okText = okText;
        this.cancelText = cancelText;
    }

    public void setText (String text) { this.text = text; }
    public void setOkText (String okText) { this.okText = okText; }
    public void setCancelText (String cancelText) {this.cancelText = cancelText; } 

    public boolean show () { 
        return super.show (this.title, this.text, this.okText, this.cancelText); 
    }       
}

相关文章:

java - 在JList中添加并显示对象

java - 谷歌协议缓冲区-用C ++加密,用Java解密-InvalidProtocolBufferException

java - 如何通过提交表格下载网页?

java - ListView / ScrollViews下的大位图会降低滚动速度

android - 在首选项屏幕中从edittext首选项获取值

delphi - 如何在ShowMessage中显示表格?

javascript - jqueryui对话框缺少标题栏,“ x按钮”和环绕对话框

java - 在我的游戏中实现ActionListeners第2部分

java - Java:将相同的动作侦听器添加到多个组合框

java - 使用Servlet特定后将mysql列值重置为默认值