首页 > 代码库 > 关于在事件代码中如何访问类中的变量
关于在事件代码中如何访问类中的变量
事件代码访问类中变量的3种方法.
在写事件代码的时候,常常需要引用主类中的变量.要访问这些变量是需要一些技巧的.
方法一:
加上final修饰符.
1 public class HelloWorld5 { 2 public static void main(String[] args) { 3 // 在变量前加上final,否则在事件代码里不能引用. 4 final String str = "孔肖寒"; 5 6 Display display = Display.getDefault(); 7 Shell shell = new Shell(); 8 shell.setSize(450, 300); 9 shell.setText("SWT Application");10 11 Text text = new Text(shell, SWT.BORDER);12 text.setBounds(71, 90, 76, 21);13 text.addMouseListener(new MouseAdapter() {14 public void mouseDoubleClick(MouseEvent e) {// 鼠标双击事件的方法15 // 打开一个信息框16 System.out.println(str);// str变量前要加上final17 //如果前面str前不加上final,eclipse就会提示 18 //Cannot refer to the non-final local variable str defined in an enclosing scope19 }20 });21 shell.open();22 shell.layout();23 while (!shell.isDisposed()) {24 if (!display.readAndDispatch()) {25 display.sleep();26 }27 }28 }29 }
上面程序的运行结果就是:每次双击文本框的时候都会在控制台打印"孔肖寒"
方法二:将变量str变成类的实例变量.但这种扩大了str变量的有效范围.
1 public class HelloWorld6 { 2 // 由于引用它的代码在静态方法内才加上static,否则不必要加上static 3 static String str = "孔肖寒"; 4 public static void main(String[] args) { 5 6 Display display = Display.getDefault(); 7 Shell shell = new Shell(); 8 shell.setSize(450, 300); 9 shell.setText("SWT Application");10 11 Text text = new Text(shell, SWT.BORDER);12 text.setBounds(71, 90, 76, 21);13 text.addMouseListener(new MouseAdapter() {14 @Override15 public void mouseDoubleClick(MouseEvent e) {// 鼠标双击事件的方法16 // 打开一个信息框17 System.out.println(str);// str变量前要加上final18 }19 });20 shell.open();21 shell.layout();22 while (!shell.isDisposed()) {23 if (!display.readAndDispatch()) {24 display.sleep();25 }26 }27 }28 }
运行结果和上面的一样.
方法三:将事件代码写成命名内部类,然后通过构造函数的参数来传入.这种方法比较繁琐.
1 public class HelloWorld7 { 2 public static void main(String[] args) { 3 String str = "孔肖寒"; 4 // 通过构造函数参数将str值传入. 5 6 Display display = Display.getDefault(); 7 Shell shell = new Shell(); 8 shell.setSize(450, 300); 9 shell.setText("SWT Application");10 11 Text text = new Text(shell, SWT.BORDER);12 text.setBounds(71, 90, 76, 21);13 text.addMouseListener(new MyMouseDoubleClick(str));14 15 shell.open();16 shell.layout();17 while (!shell.isDisposed()) {18 if (!display.readAndDispatch()) {19 display.sleep();20 }21 }22 }23 24 // 匿名内部类MyMouseDoubleClick25 public static final class MyMouseDoubleClick extends MouseAdapter {26 private String string;// 建一个变量引用str的值.27 public MyMouseDoubleClick(String str) {// 通过构造函数参数接受str值28 this.string = str;29 }30 @Override31 public void mouseDoubleClick(MouseEvent e) {// 鼠标双击事件的方法32 System.out.println(string);33 }34 }35 }
关于在事件代码中如何访问类中的变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。