我如何从 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)
的字段
我正在尝试从另一个按钮 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)
的字段