Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';不要让动作监听器使用JButton和JText_Java - Fatal编程技术网

Java Can';不要让动作监听器使用JButton和JText

Java Can';不要让动作监听器使用JButton和JText,java,Java,今天,我尝试创建一个带有文本字段和三个按钮的GUI。用户将能够在文本字段中输入各种数字,根据他们键入的数字和单击的按钮,将出现各种决策语句 我已经创建了代码并添加了动作监听器,但由于某些原因,我的第一个按钮的动作监听器无法工作。我想让它改变一个变量的值,如果它工作得更好的话,我将它用作计数器或其他方法。我会把我的代码贴在下面,如果有人能告诉我,并告诉我如何实现我想要的,我会非常感激 package nacha; import java.awt.BorderLayout; import java

今天,我尝试创建一个带有文本字段和三个按钮的GUI。用户将能够在文本字段中输入各种数字,根据他们键入的数字和单击的按钮,将出现各种决策语句

我已经创建了代码并添加了动作监听器,但由于某些原因,我的第一个按钮的动作监听器无法工作。我想让它改变一个变量的值,如果它工作得更好的话,我将它用作计数器或其他方法。我会把我的代码贴在下面,如果有人能告诉我,并告诉我如何实现我想要的,我会非常感激

package nacha;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Testing extends javax.swing.JFrame
{

    static  String code = null;
    static int button1Toggle = 0;

    public static void main(String args[]){

        int sixBatch1TotalCounter=1;
        int sixBatch1Total=2;
        int main = 1000001;

        JPanel p = new JPanel();
        JPanel p2 = new JPanel();

        BorderLayout layout = new BorderLayout();

        layout.setHgap(10);
        layout.setVgap(10);

        final JTextField reasonCode = new JTextField(10);


        reasonCode.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ev){
                Object source = ev.getSource();
                }
                });

        JButton button1 = new JButton("Next");
        button1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ev){
            button1Toggle=1;
            }
            });

        final JButton button2 = new JButton("Next Batch");
        button2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ev){

            }
        });

        final JButton button3 = new JButton("Submit");
        button3.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ev){

            }
        });

        JLabel label = new JLabel("<html>" +
                "Entry Detail: "+
                "<br>"+main+
                "<br>Entry Detail "+sixBatch1TotalCounter+" of "+sixBatch1Total+
                "<br><br>Please type 1-21 to apply reason code and addenda record to the entry detail record."+
                "<br>To omit displayed entry detail from the return, simply leave the input line blank and press enter."+
                "<br><br>Reason Code Descriptions:"+
                "<br>R01 - Insufficient Funds"+
                "<br>R02 - Account Closed"+
                "<br>R03 - No Account"+
                "<br>R04 - Invalid Account Number"+
                "<br>R05 - Unauthorized Debit to Consumer Account Using Corporate SEC Code"+
                "<br>R06 - Returned per ODFI Request"+
                "<br>R07 - Auth Revoked by Customer"+
                "<br>R08 - Payment Stopped"+
                "<br>R09 - Uncollected Funds"+
                "<br>R10 - Customer Advises Not Authorized"
                );

        p.setLayout(layout);
        p.add(label,BorderLayout.NORTH);
        p.add(reasonCode,BorderLayout.SOUTH);
        p2.add(button1,BorderLayout.WEST);
        p2.add(button2,BorderLayout.CENTER);
        p2.add(button3, BorderLayout.EAST);

        JFrame frame = new JFrame();
        frame.setSize(450,450);

        BorderLayout BorderLayout = new BorderLayout();
        BorderLayout.setHgap(10);
        BorderLayout.setVgap(10);

        frame.setLayout(BorderLayout);
        frame.add(p,BorderLayout.NORTH);
        frame.add(p2,BorderLayout.SOUTH);

        frame.setVisible(true);


            code = reasonCode.getText();
            if (reasonCode.getText().equals("1") && button1Toggle==1){
                System.out.println("Pass");


            }



        }

    }
package-nacha;
导入java.awt.BorderLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.BoxLayout;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
公共类测试扩展了javax.swing.JFrame
{
静态字符串代码=null;
静态int按钮1切换=0;
公共静态void main(字符串参数[]){
int-sixBatch1TotalCounter=1;
int-sixBatch1Total=2;
int main=1000001;
JPanel p=新的JPanel();
JPanel p2=新的JPanel();
BorderLayout=新的BorderLayout();
布局。setHgap(10);
布局。设置间隙(10);
最终JTextField理性码=新的JTextField(10);
reasonCode.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件ev){
Object source=ev.getSource();
}
});
JButton button1=新JButton(“下一步”);
button1.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件ev){
按钮1=1;
}
});
最终JButton button2=新JButton(“下一批”);
button2.addActionListener(新建ActionListener(){
已执行的公共无效操作(操作事件ev){
}
});
最终JButton按钮3=新JButton(“提交”);
按钮3.addActionListener(新建ActionListener(){
已执行的公共无效操作(操作事件ev){
}
});
JLabel标签=新的JLabel(“”)+
“条目详细信息:”+
“
”+main+ “+sixBatch1TotalCounter+”中的“
条目详细信息”+sixBatch1TotalCounter+”+ “

请键入1-21将原因代码和补遗记录应用于条目详细信息记录。”+
要从报税表中省略显示的条目详细信息,只需将输入行留空,然后按enter键即可+ “

原因代码说明:”+ “
R01-资金不足”+ “
R02-帐户已关闭”+ “
R03-无账户”+ “
R04-无效的帐号”+ “
R05-未经授权使用公司SEC代码借记消费者帐户”+ “
R06-根据ODFI请求返回”+ “
R07-客户已撤销授权”+ “
R08-已停止付款”+ “
R09-未收款”+ “
R10-客户建议未经授权” ); p、 设置布局(布局); p、 添加(标签,边框布局。北); p、 添加(南部边界布局的原因代码); p2.添加(按钮1,边界布局。西); p2.添加(按钮2,边框布局。中间); p2.添加(按钮3,边界布局。东); JFrame=新JFrame(); 框架。设置尺寸(450450); BorderLayout BorderLayout=新的BorderLayout(); 边界布局。setHgap(10); 边界布局。设置间隙(10); frame.setLayout(BorderLayout); 框架。添加(p,边界布局。北); 框架。添加(p2,边界布局。南部); frame.setVisible(true); code=reasonCode.getText(); if(reasonCode.getText().equals(“1”)&&button1Toggle==1){ 系统输出打印项次(“通过”); } } }
气垫船在评论中确实回答了这个问题

引述:


最后的if块将被调用一次,而且只调用一次,并且将在用户有机会以任何方式与GUI交互之前被调用。如上@3kings所述,如果您希望在按下按钮时调用该代码,最好将其放在ActionListener中。这个问题涉及到编写事件驱动程序意味着什么的核心,你需要思考这个错误,以及为什么它不能像你写的那样工作,因为如果你想进步,就必须满足这种理解

相反,您希望在ActionEvent中包含该代码,该代码最后的if块将被调用一次且仅一次,并且将在用户有机会以任何方式与GUI交互之前被调用。如上@3kings所述,如果您希望在按下按钮时调用该代码,最好将其放在ActionListener中。这个问题涉及到编写事件驱动程序意味着什么的核心,您将要思考这个错误,以及为什么它不能像您编写的那样工作,因为如果您想要进步,必须满足这种理解。非常感谢气垫船!这回答了问题,现在告诉我我的问题是什么。我能够更正代码并使其正常工作。。再次非常感谢。。这实际上可以作为一个回答lol。