Java 事件调用不';t使用键绑定或单击-what';逻辑错误是什么?

Java 事件调用不';t使用键绑定或单击-what';逻辑错误是什么?,java,swing,events,awt,actionevent,Java,Swing,Events,Awt,Actionevent,我试着把这个事件称为下面的事件;我用TabBuilder创建框架(因为它是我应用程序的一部分),然后它调用弹出的搜索屏幕;但是使用键绑定或简单单击按钮进行搜索的事件不起作用,当然我做错了什么,但我不知道是什么原因,因为我对Java有点陌生。谁能帮我一下吗 搜索屏幕: 事件搜索: 选项卡生成器: 您编写了这个actionListener public void actionPerformed(ActionEvent e){ if(e.getSource()==c

我试着把这个事件称为下面的事件;我用TabBuilder创建框架(因为它是我应用程序的一部分),然后它调用弹出的搜索屏幕;但是使用键绑定或简单单击按钮进行搜索的事件不起作用,当然我做错了什么,但我不知道是什么原因,因为我对Java有点陌生。谁能帮我一下吗


搜索屏幕:

事件搜索:

选项卡生成器:

您编写了这个
actionListener

public void actionPerformed(ActionEvent e){
            if(e.getSource()==close){
                System.exit(0);
        }

            if(e.getSource()==search){
                TabBuilder tb = new TabBuilder();
                tb.searchTab();

            }
        }
而您添加到
btnSearch.addActionListener(此)
,您的actionListener永远不会做任何事情

如果您的
KeyBinding
发生了类似的情况,您将操作添加到
txtSearch
中,然后询问源是否为
e.getSource()==btSearch

对于
KeyBindings
,您可以使用常量指定必须绑定它们的时间。
JComponent.WHEN_FOCUSED
JComponent.WHEN_IN_FOCUSED_WINDOW
JComponent.WHEN_FOCUSED_组件的祖先

例如:

txtSearch.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(击键,键)


1)要更快地获得更好的帮助,请发布一个。2) 对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程!事实上,我没有阅读所有的代码,但只阅读main,你有一个与构造函数具有相同签名(void difference)的方法,并且从未被调用..@andrewhompson抱歉,但我删除了我能删除的所有内容,而不仅仅是示例没有意义-如果你不同意建议编辑,因此我可以更正它。“我删除了我能删除的所有内容”SSCCE不仅仅是“简短”而已。试着实际阅读这篇文章,并注意到在许多人指责你发布的代码不“短”之前,SSCCE可以轻松地超过123行。说到这里:源代码中一行空白就足够了。@nachokk你能更具体一点吗?我不能完全理解你-谢谢+1,在我看来,这些也是问题背后的真正问题:-)我忘了更改TabBuilder上的那个小错误,我犯了那个错误是为了运行一个测试,但最终忘记了删除-它调用searchTab两次;但是我仍然缺少事件的一部分——我删除了btSearch.addActionListener(这个);因为您是对的,所以按钮没有侦听器,但是即使在删除e.getSource()之后,keyBind仍然不能工作@维克托罗利维拉:请重新编辑,你的帖子,对不起,我的编辑与你的同时发生冲突,请重新编辑,如果结果不是你想要的@就我所见,重新编辑的是我的,我做的最后一个,如果你愿意,你可以重新编辑want@VictorOliveira您的问题中仍然有相同的代码。。。此外,此方法是无用的
public void SearchScreen(){TabBuilder tb=new TabBuilder();tb.searchTab();}
public class EventSearch extends TabBuilder{
    String userQuery;
    String key = "ENTER";
    KeyStroke keyStroke = KeyStroke.getKeyStroke(key);
    
    public EventSearch(){
    
        btSearch.addActionListener(this);
        txtSearch.getInputMap().put(keyStroke, key);
        txtSearch.getActionMap().put(key, enterAction);
    }
    
    Action enterAction = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
        try{
            System.out.println("worked");
                } catch (IOException e1) {
                    e1.printStackTrace(); //print failure
                    JOptionPane.showMessageDialog(null, "HTTP request failure.");
                }   
            }
        };
     }
public class TabBuilder implements ActionListener {

    protected JButton btSearch;
    JMenuItem close, search;
    protected JTextField txtSearch;
    protected JFrame searchFrame = new JFrame();
    
    public void TabBuilder(){
    }
    
    public void searchTab(){
    
        JLabel lbSearch;
        JPanel searchPane;
        
        btSearch= new JButton("Search");
        lbSearch= new JLabel("Type Keywords in english to be searched below:");
        lbSearch.setHorizontalAlignment(SwingConstants.CENTER);
        txtSearch= new JTextField();
        searchPane=new JPanel();
        searchPane.setBackground(Color.gray);
        searchPane.add(lbSearch);
        searchPane.add(txtSearch);
        searchPane.add(btSearch);
        searchPane.setLayout(new GridLayout(3,3));
        btSearch.setEnabled(true);
        searchFrame.add(searchPane);
        searchFrame.setTitle("SHST");
        searchFrame.setSize(400, 400);
        searchFrame.setVisible(true);
        searchFrame.setDefaultCloseOperation(1);
    }
    
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==close){
            System.exit(0);
        }
        if(e.getSource()==search){
            SearchScreen s = new SearchSreen();
        }
    }
}
public void actionPerformed(ActionEvent e){
            if(e.getSource()==close){
                System.exit(0);
        }

            if(e.getSource()==search){
                TabBuilder tb = new TabBuilder();
                tb.searchTab();

            }
        }