import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Test7 extends JFrame {
JTextField tex;
Test7(){
tex = new JTextField(10);
JButton bt = new JButton("submit");
this.setLayout(new FlowLayout());
add(tex);
add(bt);
bt.addActionListener(new MyListener());
}
class MyListener implements ActionListener{ String s = tex.getText(); //为什么放在这里点击按钮不能得到s里面的内容 s的作用域不是这个类吗?
public void actionPerformed(ActionEvent arg0) {
//String s = tex.getText(); //放在这里点击按钮能得到s里面的内容 放在上面却不可以呢
JOptionPane.showMessageDialog(null,s);
}
}
public static void main(String args[]) {
new Test7().setVisible(true);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Test7 extends JFrame {
JTextField tex;
Test7(){
tex = new JTextField(10);
JButton bt = new JButton("submit");
this.setLayout(new FlowLayout());
add(tex);
add(bt);
bt.addActionListener(new MyListener());
}
class MyListener implements ActionListener{ String s = tex.getText(); //为什么放在这里点击按钮不能得到s里面的内容 s的作用域不是这个类吗?
public void actionPerformed(ActionEvent arg0) {
//String s = tex.getText(); //放在这里点击按钮能得到s里面的内容 放在上面却不可以呢
JOptionPane.showMessageDialog(null,s);
}
}
public static void main(String args[]) {
new Test7().setVisible(true);
}
}
组件容器的处理会通过调用actionPerformed方法,注意它只调用这个方法,不会初始化成员变量
希望楼主明白
public void actionPerformed(ActionEvent arg0) {
//String s = tex.getText(); //这里是Action事件被触发的时候调用,即点击按钮的时候调用,这时tex可能有内容
JOptionPane.showMessageDialog(null,s);
}
}
点击按钮就会调用 actionPerformed方法,不回执行actionPerformed方法外的语句