2013-11-26 26 views
0

我有兩個JFrames,在家長formtextField當點擊一個小form出現與focus它是textField,工藝當電流form消失了,我想focus回在父窗體的textField,這在下面的圖像中解釋,我該怎麼做?從其他框架着重回文本框在java中

IMAGE 

enter image description here

什我所做的是試圖通過requestFocus()方法採取重點父窗體的textField如下!

CODE FOR SMALL WINDOW 

quantityField.addKeyListener(new KeyListener() { 
     @Override 
     public void keyTyped(KeyEvent e) { 
     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
      if (e.getKeyCode() == KeyEvent.VK_ENTER && priceField.getText().length() > 0) { 
       if (containsOnlyNumbers(priceField.getText())) { 
        productPrice = Double.parseDouble(priceField.getText()); 
        productQuantity = Double.parseDouble(quantityField.getText()); 
        TaxInfo tax = taxeslogic.getTaxInfo(oProduct.getTaxCategoryID(), m_oTicket.getCustomer()); 
        addTicketLine(new TicketLineInfo(oProduct, productQuantity, productPrice, tax, (java.util.Properties) (oProduct.getProperties().clone()))); 
        status = true; 
        jProductList.requestFocusInWindow(); 
        frame.dispose(); 
       } else { 
        JOptionPane.showMessageDialog(null, "Invalid value entered!", "Error", JOptionPane.ERROR_MESSAGE); 
       } 
      } else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { 
       TaxInfo tax = taxeslogic.getTaxInfo(oProduct.getTaxCategoryID(), m_oTicket.getCustomer()); 
       addTicketLine(new TicketLineInfo(oProduct, dMul, dPrice, tax, (java.util.Properties) (oProduct.getProperties().clone()))); 
       status = true; 
       jProductList.requestFocusInWindow(); 
       frame.dispose(); 
      } 
     } 
    }); 

CODE FOR父窗體

jProductList.getEditor().getEditorComponent().addKeyListener(new KeyListener() { 
     @Override 
     public void keyTyped(KeyEvent e) { 
     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
      if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
       if (jProductList.getSelectedIndex() < 0) { 
        //Do nothing 
       } else { 
        //Add product into list 
        m_returnObj = (ProductInfoExt) product.getProductDetail(product.getProductCode(jProductList.getSelectedItem().toString())); 
        jProductList.setSelectedIndex(-1); 
        if (addTicketLine(m_returnObj, 1.0, m_returnObj.getPriceSell())) { 
         System.out.println("Requesting focus"); 
         jProductList.requestFocusInWindow(); 
        } 
        //jProductList.requestFocus(); 
       } 
      } 
     } 
    }); 

WHERE jProductList是父窗體的文本框我需要重點關注!

回答

0

我有兩個JFrames,

應用程序應該只有一個單一的JFrame。在你的情況下,子窗口應該是modal JDialog

在家長對文本框點擊形成一個小表格時出現

不要使用KeyListener的。

您應該將ActionListener添加到父窗體中的文本字段。當按下Enter鍵時,ActionListener將被調用。

當模式對話框關閉時,焦點將自動返回到文本字段。

在子窗體中,您再次不應該使用KeyListener。您可以再次將ActionListener添加到文本字段。要處理退出鍵,您應該使用Key Bindings