2017-10-15 4 views
0

Also, in Java Ich habe zwei Klassen erstellt mit swing components. In einer Klasse namens SearchPage habe ich Parameter für eine Suche in Jtextfield oder Jcombobox eingerichtet und klicken Sie auf die Anwendung jbutton. Wenn ich das tue, je nachdem, welches Feld Daten enthält, möchte ich diese Variable an die Klasse ItemPage senden, die in meiner pop_tree-Methode verwendet werden soll, um diese Variable zu verwenden, um meine mysql-Datenbank zu durchsuchen und die Baumstruktur mit den Suchergebnissen zu füllen. Wie kann ich das erreichen? HierÜbergeben einer jcombobox-Variable von einer Klasse zu einer anderen Klasse mit einem jbutton Aktion in einer anderen Klasse

ist der Code für die pop_tree Methode:

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); 
      } 

ich das Suchformular, um Setup-Parameter der Suche erstellt haben, aber wenn ich die apply_search_button auf dem Formular klicken, mag ich die Variable die senden richtige Position in der pop_tree() Methode, um die Suche durchzuführen. Kann mir jemand dabei helfen? Vielen Dank.

+0

Sie tun es auf die gleiche Weise alle Informationen von einer Klasse zur anderen übergeben, entweder über Methodenparameter oder den Konstruktor, je nachdem, was Sie Sie erreichen wollen – MadProgrammer

+0

Vielleicht sollte beginnen mit einem Blick auf [Weitergabe von Informationen an eine Methode oder einen Konstruktor] (https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html) – MadProgrammer

+0

Danke, aber ich weiß, wie man tut und Getter. Dieser Ansatz scheint nicht zu funktionieren. Außerdem möchte ich die Variable als Parameter in meinem mysql-Zustand für die Suche verwenden. – VictorCreed

Antwort

0

Um die Antwort zu erhalten "Passing eine jcombobox-Variable von einer Klasse zu einer anderen Klasse mit einer jbutton-Aktion in einer anderen Klasse" viel Code gebucht, wird nicht benötigt. Berücksichtigen Sie immer die Buchung [mcve].
Hier ist eine, die zeigt genau das:

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

Okay, ich habe ein paar Dinge aus genommen dies und sie angewendet und ich bin in der Lage, den Wert an eine Methode übergeben, aber mit meiner Pop-Baum() -Methode ist nicht statisch, kann ich nicht die Werte dort, wo ich sie brauche mehr Vorschläge? – VictorCreed

+0

@VictorCreed "pop_tree" ändern – MadProgrammer

+0

Hmmm, pop_tree statisch machen? – VictorCreed

Verwandte Themen