2014-04-18 45 views
0

我正在用Java SWT编写一个小型文本编辑器。 如果修改了对象“文本”的文本字段,则监听器必须将布尔值设置为true,以更改文本字段。当我想退出编辑器时,如果文本框被更改,它应该问我保存。但布尔变量只在其ModifyListener中更改它们的值? 如果我推退出按钮,selectionlistener反应,它应该问我保存,但它没有要求。Java SWT ModifyListener设置布尔变量

我的失败是什么?

public class ModifyListenerTextField implements ModifyListener { 

private Boolean changedTextField; 

public ModifyListenerTextField(Boolean changedTextField){ 
    this.changedTextField = changedTextField; 
} 

@Override 
public void modifyText(ModifyEvent arg0) { 
    if(!changedTextField.booleanValue()){ 
     changedTextField = Boolean.TRUE; 
    } 
} 

} 
+0

请发布完整的代码并澄清哪些内容无效。注意:这里不需要使用'Boolean','boolean'就可以。为什么你将它传递给文本字段构造函数? – Baz

+0

我使用布尔代替原始布尔值,因为我必须通过布尔变量的引用来检查变量是否变为真... – Oni1

+0

为什么你不只是添加一个get函数到你的类,返回布尔? – Baz

回答

-1

这很简单。你不需要执行任何操作。您可以根据您的意愿更改以下代码

JTextField field = new JTextField(); 

field.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       booleanVar = true; 
      } 
     }); 
+2

OP需要SWT代码,而不是Swing/AWT。 – Baz

+0

对不起,我很困惑 –