当前位置: 首页 > 知识库问答 >
问题:

在Netbeans平台中使用自定义NotifyDescriptor

朱祺
2023-03-14

我已经学会了使用NotifyDescriptor创建弹出对话框。我设计了一个带有两个大按钮的JPanel,分别为购买现金流出,我使用的代码在底部显示了另一个按钮,分别为。我不希望NotifyDescriptor在屏幕上放置自己的按钮。我只想让我的按钮在那里,当单击某个自定义按钮时,弹出窗口将关闭并存储值。(就像单击yesno时关闭窗口一样)。我正在使用的代码如下

       // Create instance of your panel, extends JPanel...
        ChooseTransactionType popupSelector = new ChooseTransactionType();

        // Create a custom NotifyDescriptor, specify the panel instance as a parameter + other params
        NotifyDescriptor nd = new NotifyDescriptor(
                popupSelector, // instance of your panel
                "Title", // title of the dialog
                NotifyDescriptor.YES_NO_OPTION, // it is Yes/No dialog ...
                NotifyDescriptor.QUESTION_MESSAGE, // ... of a question type => a question mark icon
                null, // we have specified YES_NO_OPTION => can be null, options specified by L&F,
                      // otherwise specify options as:
                      //     new Object[] { NotifyDescriptor.YES_OPTION, ... etc. },
                NotifyDescriptor.YES_OPTION // default option is "Yes"
        );

        // let's display the dialog now...
        if (DialogDisplayer.getDefault().notify(nd) == NotifyDescriptor.YES_OPTION) {
            // user clicked yes, do something here, for example:
                System.out.println(popupSelector.getTRANSACTION_TYPE());
        } 

共有1个答案

吴修洁
2023-03-14

为了替换options按钮上的文本,可以为options参数传入字符串[],或者,如果需要更多的控制,可以传入JButton[]。因此,在您的示例中,您需要从message面板中删除按钮,并为options参数传入字符串[]

对于initialvalue(最后一个参数),可以使用notifydescriptor.yes_option中的任一个string[]值(购买或现金),而不是使用notifydescriptor.yes_optionDialogDisplayer.notify()方法将返回选择的值。因此,在本例中,它将返回字符串,但如果传入JButton[],则返回的值将是JButton

String initialValue = "Purchase";
String cashOut = "Cashout";
String[] options = new String[]{initialValue, cashOut};

NotifyDescriptor nd = new NotifyDescriptor(
            popupSelector,
            "Title",
            NotifyDescriptor.YES_NO_OPTION,
            NotifyDescriptor.QUESTION_MESSAGE,
            options,
            initialValue
    );

String selectedValue = (String) DialogDisplayer.getDefault().notify(nd);
if (selectedValue.equals(initialValue)) {
    // handle Purchase
} else if (selectedValue.equals(cashOut)) {
    // handle Cashout   
} else {
    // dialog closed with top close button
}
 类似资料:
  • 我用JDK 7和插件Java ME SDK 3.2安装了NetBeans 7.2.1(它内部有Wireles Toolkit 2.5.2)。 我尝试通过单击File/new project/Java ME/Mobile Application创建新项目。然后我点击Next。在下一个窗口中,消息: 每个CLDC项目都需要为其分配CLDC兼容的SDK/Platform/Emulator。

  • JustAuth (opens new window)发展到现在,基本上已经涵盖了国内外大多数知名的网站。JustAuth (opens new window)也一直以它的全和简,备受各位朋友的厚爱、支持。 但现在OAuth技术越来越成熟,越来越多的个人站长或者企业都开始搭建自己的OAuth授权平台,那么针对这种情况,JustAuth (opens new window)并不能做到面面俱到,无法去

  • 我在netbeans上创建了一个项目并添加了jpa,但是当我运行这个项目时,我接受了这个错误。我使用netbeans IDE。 最后是我的persistence.xml

  • 我对Symfony和API平台很陌生。我正在尝试创建一个自定义资源/操作,该资源/操作接收请求的正文,根据值从数据库中获取数据,然后将实体集合返回给客户端。 示例:具有以下正文的 请求: 根据这些属性,我想查询数据,进行计算,然后返回数据。 我试图弄清楚如何使这个API平台的方式。我已经在谷歌上搜索并在留档中寻找了几个小时,但我找不到实现这一目标的方法。 我尝试使用和如下所示的控制器查询数据: 但

  • 我已经安装了NetBeans8.0,预装了Java ME插件。现在,当我试图创建一个新的Java ME项目时,它说 此外,“Java ME Platform”字段是空白的。因此,我单击,添加,并给出JAVA ME SDK的路径。它发现了平台并添加了设备。 请救命!

  • 问题内容: 在下面的示例中,我在绿色背景上绘制了一个自定义,但是它没有出现。为什么会这样? 问题答案: JComponent不会绘制其背景。您可以自己绘制,也可以使用可以绘制背景的JPanel