2012-09-20 56 views
4

我正在學習java和Swing,現在正在努力爲教育目的開發簡單的程序。Java Swing默認專注於框架

所以這裏是問題。

我已經網格佈局和我的框架上的字段默認文本

 accNumberField = new JTextField("0", 10); 
    accNumberField.addFocusListener(new FocusListener() { 
     int focusCounter = 0; 
     @Override 
     public void focusGained(FocusEvent arg0) { 
      // TODO Auto-generated method stub 
      if (focusCounter > 0) 
      accNumberField.setText(""); 
      focusCounter++; 
     } 

我要的是,當現場的第一次用戶點擊默認文本disappered。所以我添加了焦點偵聽器並使用了accNumberField.setText(「」);在focusGained方法。

但問題是,我的框架中的默認第一個字段在創建框架時正好聚焦。並且默認文本從開始消失。你可以看到我使用了計數器。但那不是我想要的。

我希望沒有領域會在創建時得到重點,每個領域都能夠從用戶點擊其中一個領域時獲得焦點。

對不起,如果我拼寫錯了。英語不是我的母語。

+0

'新的JTextField(「0」,10);'除了'1',用戶在字段中輸入什麼內容?這個GUI是什麼? –

+0

http://stackoverflow.com/questions/1738966/java-jtextfield-with-input-hint –

+0

任何整數。 圖形用戶界面是一個帶有gridlayout 5和3的框架.Gris的一行是 字段中的用戶類型值,單擊保存按鈕,如果輸入正確,圖標從紅色以綠色傾斜。 – user1685095

回答

2

找到具有您所需的功能,Java JTextField with input hint一個代碼示例一個線程。確切地說,你需要提供你自己的實現JTextField,它將在字段中保存「默認文本」,專門爲此創建。

對於第二個問題,您可以將焦點設置爲buttonframe本身。

+0

而這又不是我想要的功能。 感謝您的幫助,但這並不完全是我所要求的,也是我所要求的。 當程序開始執行並且在佈局增益焦點的第一個字段中創建GUI時,「提示」或「默認文本」正在消失。我希望它不會消失。不僅如此,我希望textField在用戶點擊它們時不會集中精力。明白了嗎? =) – user1685095

+0

@ user1685095:Ahan,所以鏈接沒有回答你的第二部分。我對麼? –

+0

Yeap,但感謝您的鏈接=) – user1685095

2

是否有任何理由使用focusListener()?爲什麼不使用mouseListener()如下?

accNumberField.addMouseListener(new MouseAdapter() 
    { 
     @Override 
     public void mouseReleased(MouseEvent e) 
     { 
      accNumberField.setText(""); 
     } 
    }); 

,如果你想清除第一次點擊的文本,你可以簡單地使用一個布爾值:

//outside constructor 
    private boolean isTextCleared = false; 

    //in constructor 
    accNumberField.addMouseListener(new MouseAdapter() 
    { 
     @Override 
     public void mouseReleased(MouseEvent e) 
     { 
      if (!isTextCleared) 
      { 
       accNumberField.setText(""); 
       isTextCleared = true; 
      } 
     } 
    }); 
+0

不,我不= =)) 如果我將添加大括號,然後這兩行 accNumberField.setText(「」); focusCounter ++; 將永遠得不到執行))) 我再說一遍,「我希望沒有領域會在創建時得到重點......」 – user1685095

+0

我已編輯答案。看看這是否有用 –