2014-04-14 6 views
1

mysql db에서 추출한 데이터로 가득 찬 두 개의 목록이 있습니다. 내가 원하는 것은 사용자가 JList1 (메뉴 목록)에서 항목 (메뉴)을 선택하면 Jlist2 (productList라고 함)는 그 메뉴의 제품과 그 밖의 것들, 즉 그 안에 새로운 제품을 삽입 할 수있는 기능을 표시해야합니다. 메뉴 또는 방금 만든 새 메뉴에서 사용자가 기존 메뉴 나 새로 생성 된 메뉴에 제품을 삽입하는지 알려주는 부울 변수를 사용하여 약한 것으로 생각하는 방식으로이 작업을 수행했습니다. 제발, 더 나은 솔루션을 제안 해 주실 수 있습니까? 여기두 개의 목록을 연결하는 방법

private void bAddProdActionPerformed(java.awt.event.ActionEvent evt) {           
    //If new menu is saved, get the new menu's Id 

    if (newMenuIsSaved == true) { 
     Product newProduct = new Product(); 
     newMenuId = DBConnection.getNewMenuId(); 
     newProduct.setMenuId(newMenuId); 
     newProduct.setProductName(productName.getText()); 
     if (checkPPriceValidity(productPrice.getText(), newProduct)) { 
      int result = DBConnection.insertProduct(newProduct); 
      if (result == 1) { 
       reloadProductList(); 

       disableProductButtons(); 
      } 
     } 

    } else { 
     Product newProduct = new Product(); 
     //If a new menu wasn't saved, get the menuId from the selected one (from menuList): 
     Menu selectedMenu = (Menu) menuList.getSelectedValue(); 
     newProduct.setMenuId(selectedMenu.getMenuId()); 
     newProduct.setProductName(productName.getText()); 
     if (checkPPriceValidity(productPrice.getText(), newProduct)) { 
      int result = DBConnection.insertProduct(newProduct); 
      if (result == 1) { 
       reloadProductList(); 
       newMenuIsSaved = false; 
       disableProductButtons(); 
       bNewProduct.setEnabled(true); 

      } 
     } 
    } 
}           

그리고 방법 reloadProductList()한다 :

private void reloadProductList() { 
    modelProductList.clear(); 

    if (newMenuIsSaved) { 
     Vector<Product> productVoices = DBConnection.fillProductList(newMenuId); 
     for (int i = 0; i < productVoices.size(); i++) { 
      modelProductList.addElement((Product) productVoices.get(i)); 
     } 
    } else { 
     Vector<Product> productVoices = DBConnection.fillProductList(selectedMenuId); 
     for (int i = 0; i < productVoices.size(); i++) { 
      modelProductList.addElement((Product) productVoices.get(i)); 
     } 

    } 
} 

감사합니다 여기에 코드의 가장 중요한 부분의 추출물이다, 이것은 DB에 새로운 제품을 저장하는 방법은 당신이 아주 많이.

답변

1

한 가지 방법은 ListSelectionListenermenuList에 추가하고 핸들러가 선택한 행에 대한 세부 사항을 표시 할 수있는 다른 목록의 모델을 설정하는 것입니다.

+0

감사합니다.하지만 자세한 내용이나 예를 들어 주시겠습니까? – JamieITGirl

+0

어쩌면 [this] (http://stackoverflow.com/a/15575202/261156)와 같은 것일 수 있습니까? –

관련 문제