我有一些问题JButton
操作事件,我已经声明了一个全局变量( boolean tc1
)和JButton t1
。 当我按下将JButton我需要改变布尔变量为“真”的价值。 谁能帮我吗? 我的代码放在这里。
class Tracker extends JPanel {
public static void main(String[] args) {
new Tracker();
}
public Tracker() {
JButton tr=new JButton("TRACKER APPLET");
JButton rf=new JButton("REFRESH");
boolean tc1=false,tc2=false,tc3=false,tc4=false;
JButton t1=new JButton(" ");
t1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tc1=true;
}
});
System.out.println(tc1);
//remaining part of the code...
// here i need to use the value of tc1 for further process..
}
}
谢谢。
tc1
必须是一个全局变量。
你可以在方法内部定义的另一个类使用局部变量,除非局部变量是final
变量。
取出的声明tc1
从constructor
到整体的知名度class
class Tracker extends JPanel {
boolean tc1=false,tc2=false,tc3=false,tc4=false;
public static void main(String[] args) {
new Tracker();
}
public Tracker() {
JButton tr=new JButton("TRACKER APPLET");
JButton rf=new JButton("REFRESH");
JButton t1=new JButton(" ");
t1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tc1=true;
}
});
System.out.println(tc1);
//remaining part of the code...
// here i need to use the value of tc1 for further process..
}
}
我也已经遇到了这个问题,幸运的是我找到了解决办法
你不能在一个匿名内部类(动作监听)更改本地方法变量的值。 但是你可以改变外部类的一个实例变量...所以你可以只移动TC1来跟踪。
class Tracker extends JPanel {
public static void main(String[] args) {
new Tracker();
}
private boolean tc1; // <=== class level instead...
public Tracker() {
JButton t1 = new JButton(" ");
t1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tc1 = true;
}
});
}
}
首先,你说, i have declared a global variable(boolean tc1)
这里TC1不是一个全局变量,如果你想有一个全局变量,那么你必须声明变量为static
。
然后,如果你想访问该变量button click event
,那么你可以下面的代码写:
class Tracker extends JPanel
{
boolean tc1=false,tc2=false,tc3=false,tc4=false;
public static void main(String[] args) {
new Tracker();
}
public Tracker()
{
JButton tr=new JButton("TRACKER APPLET");
JButton rf=new JButton("REFRESH");
JButton t1=new JButton(" ");
t1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tc1=true;
getValue();
}
});
}
public void getValue()
{
System.out.println("values is: "+ tc1);
}
}
定义click处理函数:
public void onClick(Boolean tc1){
System.out.println(tc1) ;
//Write some logic here and use your updated variable
}
然后:
public Tracker()
{
JButton tr=new JButton("TRACKER APPLET");
JButton rf=new JButton("REFRESH");
boolean tc1=false,tc2=false,tc3=false,tc4=false;
JButton t1=new JButton(" ");
t1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tc1 = true ;
onClick(tc1) ;
}
});