我如何从 Java 中的另一个按钮调用一个按钮中创建的实例

How do i call an instance made in one button from another button in Java

我正在尝试从另一个按钮 btnNewButton_1

调用在 btnNewButton 中创建的 RSA() 实例

我该怎么做,甚至可能吗?

这是代码。

//ENCRYPT BUTTON
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                String num1;

                try{
                    RSA rsa = new RSA();
                    num1 =(textFieldToEncrypt.getText());
                    byte[] encrypted = rsa.encrypt(num1.getBytes());
                    byte[] decrypted = rsa.decrypt(encrypted);
                    textFieldEncStrByte.setText(bytesToString(encrypted));
                    textFieldDecrypted.setText(new String(decrypted));

                }//close try
                catch (Exception e){
                    JOptionPane.showMessageDialog(null, "Please Enter Valid Text");         
                }//close catch
            }//close public void
        });//close button

        //DECRYPT BUTTON
        btnNewButton_1.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent e) {
                String num1;

                try{
                    num1 =(textFieldEncStrByte.getText());
                    byte[] decrypted = decrypt(num1.getBytes());

                    textFieldDecrypted.setText(bytesToString(decrypted));

                }//close try
                catch (Exception e1){
                    JOptionPane.showMessageDialog(null, "Please Enter Valid Text");         
                }//close catch
            }//close public void
        });//close button

没有。不像现在这样。这是因为 Java 有 Scoping。您需要做的是增加变量的范围,以便可以从两种方法访问它。即,通过使其成为 global.

private RSA rsa = new RSA();

btnNewButton.addActionListener(new ActionListener() {
    // use rsa.
}

btnNewButton_1.addActionListener(new ActionListener() { 
    // use rsa.
}

你需要将它存储在一个class字段中,像这样

class Foo {
  static RSA myRSA;

  public void buidGui() {
    //...
    ActionListener al = new ActionListener() {
       myRSA = ...;
    }
    ActionListener al2 = new ActionListener() {
       if (myRSA != null) // do something
    }
}

这是一个范围问题 - 如果 RSA 变量在您的方法中被定义为局部变量,您将无法共享它。

分享,请移为实例变量,例如:

public class MyClass {
    private RSA ras = new RSA();

    public void initGui(){
       btnNewButton.addActionListener(){
            .... // this code can use 'ras'
       }
       btnNewButton_1.addActionListener(){
            .... // this code can use 'ras'
       }

    }

}

更详细地说,您的 actionListener 是内部(和匿名)classes,这意味着它们可以访问包含 class (MyClass)

的字段