【问题标题】:Enable/Disable an SWT Text based on a combo selection基于组合选择启用/禁用 SWT 文本
【发布时间】:2015-04-18 18:46:51
【问题描述】:

我有一个文本和一个组合小部件,我有一个组合选择侦听器:

class MyDialog extends org.eclipse.jface.dialogs.Dialog
{
    private Text text;
    private Combo combo; 

public void createDialogArea(Composite parent)
{
    text = new Text(composite, SWT.BORDER);

    combo = new Combo(composite, SWT.NONE);

    combo.add("One");
    combo.add("Two");
    combo.add("Three");
    combo.addSelectionListener(new SelectionAdapter()
    {
        public void widgetSelected(SelectionEvent e)
        {
            if(combo.getText().equals("One");
            {
                text.setEnabled(false);
            }
        } 
    });
}
}

但在选择侦听器中,我在“text.setEnabled(this);”处得到一个空指针异常 text 和 cobmo 是我的类字段。

请帮帮我

谢谢

【问题讨论】:

  • 如果没有将combotext 声明为final,则无法编译上述代码,如果声明它们,则无法获得NPE。请提供您的代码工作副本的 sn-p 或堆栈跟踪的摘录
  • 那些不是最终的,那些是我的班级档案。类 MyCode { 私人组合组合;私有文本文本;
  • 是的,我现在也这样做了,但问题是我在 org.eclipse.jface.dialogs.Dialog 类的重写方法“createDialogArea”中有这段代码,所以一旦对话框已加载。当我们单击组合并选择一个即调用侦听器时。我还是不明白你的想法。
  • 获得 NullPointerException 的唯一方法是在代码的其他位置将文本设置为 null。您是否有一些过早调用的清理程序?
  • 我有一份你的程序的工作副本,它完全符合你的期望,pastebin.com/1HeNNQ5H,你最后的代码应该有问题。

标签: java eclipse eclipse-plugin swt jface


【解决方案1】:

您说您在 text.setEnabled(this); 处收到空指针异常,但声明 text.setEnabled(this); 未出现在您发布的代码中。只有text.setEnabled(false); 出现在您发布的代码中。因此,错误可能在其他地方,或者您的帖子可能需要修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2015-08-02
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多