java - 使用另一个类中的 jbutton 操作将 jcombobox 变量从一个类传递到另一个类

标签 java mysql swing

因此,在 Java 中,我有两个使用 swing 组件 创建的类。在一个名为 SearchPage 的类中,我在提供的 JtextfieldJcombobox 中设置搜索参数,然后单击 apply jbutton。当我这样做时,根据包含数据的字段,我想将该变量发送到 ItemPage 类,以便在我的 pop_tree 方法中使用该变量来搜索我的 mysql 数据库并填充树与搜索结果。我怎样才能做到这一点?

以下是 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() 中的正确位置 方法来执行搜索。谁能帮我这个?谢谢。

最佳答案

要获得“使用另一个类中的 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);
    }
}

关于java - 使用另一个类中的 jbutton 操作将 jcombobox 变量从一个类传递到另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46751382/

相关文章:

java - JMenuItem 构造函数不接受操作

java - actionPerformed 在展开窗口时触发

java - 每次按下 "Write"按钮时如何将字符串行写入文件

java - 调整 JFrame 大小时 Swing 组件抽搐

php - 循环遍历 MySql 表并使用 PHP 按特定顺序输出

mysql - 两张表互相引用的sql查询

java - 为什么我的背景颜色在 JFrame 中不显示?

java - 如何为 jackson 启用严格类型解析?

java - 什么时候应该在自己的文件中定义常量?

mysql - SQL - 比较 Ajax 数组中的值,如果不在表中则删除它们