gpt4 book ai didi

java - 当内部类中的变量值发生变化时,如何在整个外部类中更改变量值?

转载 作者:行者123 更新时间:2023-12-01 14:11:19 25 4
gpt4 key购买 nike

我有一个 swing 类,其中包含一个声明为 Final 的字符串变量 str3 和两个

由两个 JButton b1 实现的 ActionListener 接口(interface)

和b2,当按下b1 JButton时str3字符串取值,

我的问题是如何使 str3 值在整个类(class)中更改

而不是在第二个 ActionListener 接口(interface)中(不仅仅在第一个内部类中)。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

public class mySwing extends JFrame {

JButton b1, b2;

public mySwing() {
final String str3;
JPanel panel = new JPanel();
b1 = new JButton("please click me first");
b2 = new JButton("please click me second");
final JTextField txt = new JTextField(" ");
panel.add(txt);
Container pane = getContentPane();
panel.add(b1);
panel.add(b2);
pane.add(panel);
str3 = new String();
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent acv) {
String input = "HelloWorld";
String str3 = new String(input.substring(0, 5));
txt.setText(str3);
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent acv) {
txt.setText(str3);
}
});
setVisible(true);
}

public static void main(String[] args) {
new mySwing();
}
}

最佳答案

只需将 str3 设为外部类 mySwing 的非最终实例变量即可。

顺便说一句,不要对 input.substring(0, 5) 的结果执行 new String(input.substring(0, 5)) 等操作 < em>是一个字符串,因此您不需要创建另一个字符串。

根据您的代码:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

public class mySwing extends JFrame {

JButton b1, b2;
String str3="";

public mySwing() {
JPanel panel = new JPanel();
b1 = new JButton("please click me first");
b2 = new JButton("please click me second");
final JTextField txt = new JTextField(" ");
panel.add(txt);
Container pane = getContentPane();
panel.add(b1);
panel.add(b2);
pane.add(panel);
str3 = new String();
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent acv) {
str3+=" (1)";
txt.setText(str3);
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent acv) {
str3+=" (2)";
txt.setText(str3);
}
});
setVisible(true);
}

public static void main(String[] args) {
new mySwing();
}
}

关于java - 当内部类中的变量值发生变化时,如何在整个外部类中更改变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com