2017-10-15 175 views
0

因此,在Java中,我有兩個類是使用swing components創建的。在一個名爲SearchPage的課程中,我在提供的JtextfieldJcombobox中設置了搜索參數,然後單擊apply jbutton。當我這樣做時,根據包含數據的字段,我想將該變量發送到ItemPage類,以便在我的pop_tree方法中使用該變量來搜索我的mysql數據庫並使用搜索結果填充樹。我怎樣才能做到這一點?在另一個類中使用jbutton動作將jcombobox變量從一個類傳遞到另一個類

下面是pop_tree方法的代碼:

public final void pop_tree() throws SQLException { 
    //creating root node 
    DefaultTreeModel dbtree = (DefaultTreeModel)DBTree.getModel(); 
    dbtree.reload(); 
    dbtree.getRoot(); 
    DefaultMutableTreeNode content = new DefaultMutableTreeNode("Content"); 

     //let's see if I can create these child nodes 
     SearchPage s = new SearchPage(); 
     try { 
      con = DBconnect.getConnection(); 
      stm = con.createStatement(); 
      s.apply_search_button.doClick(); 
      if(s.apply_search_button.getModel().isPressed()){ 
      //Grab what's in search field of Search Page 
      try{ 
       String search = s.search_field.getText(); 
       if (search == null){ 
        return; 
       }else{ 
        ResultSet rs = stm.executeQuery("SELECT * from displaydetails WHERE item LIKE '%"+search+"%'"); 
        while (rs.next()){ 
         DefaultMutableTreeNode itemNode = new DefaultMutableTreeNode (rs.getString("item")); 
         content.add(itemNode); 
        } 
       } 
      }catch(SQLException e){ 
       System.out.println(e); 
      } 

      try{ 
       //If a genre selection is made in the combo box: 
       if ((s.option_box.getSelectedItem())== "genre"){ 
       String genre2 = s.result_box.getSelectedItem().toString(); 
       if (genre2.equals(s.result_box.getSelectedItem())) { 
        ResultSet rs1 = stm.executeQuery("SELECT * from displaydetails WHERE genre = '" + genre2 + "';"); 
        while (rs1.next()){ 
         DefaultMutableTreeNode itemNode = new DefaultMutableTreeNode (rs1.getString("item")); 
         content.add(itemNode); 
        } 
       } 
      } 
      }catch(SQLException e){ 
       System.out.println(e); 
      } 

我已經創建設置搜索參數搜索表單,但是當我點擊apply_search_button的形式,我想將變量發送到在pop_tree()方法中執行搜索的適當位置。誰能幫我這個?謝謝。

+0

你做到這一點,你從一個類傳遞任何信息到另一個同樣的方式,無論是通過方法參數或構造,這取決於你想要達到 – MadProgrammer

+0

也許你什麼應該首先看看[將信息傳遞給方法或構造函數](https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html) – MadProgrammer

+0

謝謝,但我知道如何做setter和獲得者。這種方法似乎並不奏效。另外,我想在我的mysql狀態中使用變量作爲參數進行搜索。 – VictorCreed

回答

0

爲了得到「無需使用其他類中的jbutton動作將jcombobox變量從一個類傳遞給另一個類的答案」。 始終考慮發佈 [mcve]
這裏是一個演示這一點:

import java.awt.BorderLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class SearchPage extends JFrame { 

    private JTextField searchField; 
    private JButton searchButton; 
    private ItemPage itemPage; 

    SearchPage(){ 
     setSize(200,100); 
     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     searchField = new JTextField(9); 
     add(searchField, BorderLayout.NORTH); 

     searchButton = new JButton("Search"); 
     searchButton.addActionListener(e -> { 

      String searchFor = searchField.getText(); 
      if ((searchFor != null) && ! searchFor.isEmpty()) { 
       itemPage.search(searchFor); 
      } 
     }); 
     add(searchButton, BorderLayout.SOUTH); 
     itemPage = new ItemPage(); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     new SearchPage(); 
    } 
} 

class ItemPage { 

    public void search(String searchFor) { 
     System.out.println("Searching for "+ searchFor); 
    } 
} 
+0

好吧,我採取了一些從這和應用他們,我能夠將值傳遞給一個方法;但是,我的pop_tree()方法是非靜態的,我無法傳遞值,這是我需要它們的地方。更多建議? – VictorCreed

+0

@VictorCreed更改'pop_tree' – MadProgrammer

+0

嗯,使pop_tree靜態? – VictorCreed

相關問題