2013-02-14 105 views
0

我不知道爲什麼我的JTextField沒有被點擊時啓用。無法啓用按鈕點擊JTextField

這裏就是我創建並設置JTextField中的代碼:

PromptHandler ph = new PromptHandler(this); 
textPanel = new JPanel(); 
arEntry = new JTextField(REGION_TEXT_FIELD_COLUMNS); 
arEntry.setToolTipText(ENTER_NEW_REGION_ID_TITLE_TEXT); 
arEntry.setActionCommand(ENTER_NEW_REGION_ID_TITLE_TEXT); 
arEntry.addActionListener(ph); 
textPanel.add(arEntry); 

這裏是在PromptHandler,是以文本字段的照顧代碼:

private HelloWorld hwApp; 
private String id; 

public PromptHandler (HelloWorld hw) { 
    hwApp = hw; 
} 

@Override 
public void actionPerformed(ActionEvent ae) { 
    String command = ae.getActionCommand(); 
    switch(command) { 
     case ENTER_NEW_REGION_ID_TITLE_TEXT: 
      hwApp.arEntry.setEnabled(true); 
      break; 
+2

如果您以前調用過'arEntry.setEnabled(false)',那麼如何調用'actionPerformed()'? – trashgod 2013-02-14 00:19:51

+0

你如何監視鼠標事件的字段? – MadProgrammer 2013-02-14 00:22:21

回答

1

ActionListener與鼠標交互沒有任何關係。 ActionListener s用於提供組件可能發生的一些不倫不類的行爲的通知。在JTextField的情況下,這通常意味着用戶已經引起了一些「應用」行動(通常通過回車鍵)

如果要監視用鼠標領域的互動,那麼你需要一個MouseListener

​​

我對此的擔心是,爲什麼?如果您打算在點擊時啓用該字段,禁用該字段有什麼意義?唯一能做的就是防止它在啓用之前接收鍵盤焦點。

+0

問題在於文本字段未啓用。關鍵事件也不起作用。 – Fam 2013-02-14 00:56:06

+0

其實,運行這個例子,它對我來說工作得很好。 – MadProgrammer 2013-02-14 01:02:15

1

您是否希望禁用或啓用您的JTextField?

我很確定當你創建一個JTextField對象時,它已經被啓用,除非你在創建它之後禁用它。所以你的動作監聽器在改變JTextField的狀態方面沒有做任何事情。

+0

文本字段永遠不會setEnabled(false),所以我不確定它爲什麼不可以點擊。這就是爲什麼我在actionPerformed方法中添加了case的原因,因爲我認爲點擊文本字段可以啓用。 PromptHandler實現了ActionListener,我是否需要實現另一個接口? – Fam 2013-02-14 00:30:47

+0

你可以發佈你創建JTextField本身包括變量的整個代碼嗎? – MathanMV 2013-02-14 01:07:22