2013-10-13 64 views
0

我有一個JFace對話框,其中包含SWT文本和一個按鈕。最初當對話框打開時,該按鈕應該被禁用,並且當我點擊Text並且只要Text的插入位置是可見的,就應該啓用按鈕。合適的SWT文本監聽器

這是我使用的聽衆:

text.addMouseListener(new MouseListener() 
    { 
     @Override 
     public void mouseDoubleClick(MouseEvent arg0) 
     { 

     } 

     @Override 
     public void mouseDown(MouseEvent arg0) 
     { 

     } 

     @Override 
     public void mouseUp(MouseEvent arg0) 
     { 
      testButton.setEnabled(true); 

     } 

    }); 

    text.addFocusListener(new FocusListener() { 

     @Override 
     public void focusLost(FocusEvent arg0) 
     { 
      testButton.setEnabled(false); 
     } 

     @Override 
     public void focusGained(FocusEvent arg0) 
     { 

     } 
    }); 

我使用適當的聽衆?請建議

+0

所以你想''按鈕'被禁用當'文本'失去焦點?如果是這樣,你將永遠無法按下'Button' ... – Baz

+0

是的......但是當我點擊文本時我啓用了按鈕,然後當我離開文本時,我仍然啓用了該按鈕並且我能夠按下它......一旦按鈕被點擊,按鈕被禁用 – kk331317

+0

好的,所以按鈕被禁用,然後你點擊文本,按鈕被啓用(即使沒有輸入文本),以及何時你點擊它禁用自己的按鈕? – Baz

回答

1

如果我理解正確的話,這應該是你想要什麼:

button.setEnabled(false); 
    button.addListener(SWT.Selection, new Listener() 
    { 
     @Override 
     public void handleEvent(Event arg0) 
     { 
      button.setEnabled(false); 
     } 
    }); 

    text.addListener(SWT.FocusIn, new Listener() 
    { 
     @Override 
     public void handleEvent(Event e) 
     { 
      button.setEnabled(true); 
     } 
    }); 

最初,Button被禁用。一旦Text聚焦,它將被啓用。按下後,Button將被禁用。