在java中一个事件可以嵌套另一个事件吗?上次试过好像会重复执行第一个事件
button1触发一个事件,(例如让一个frame1消失,另一个frame2显现,这是在button1触发后产生的事件),接着frame2中再设置一个按钮button2,又触发一个事件,也就是说button2是在button1触发后才在frame2中声明的并且设置属于button2的事件。
千年尤莉卡
12 years, 7 months ago
Answers
这是完全可以的!只要第一个事件触发后不影响第二个事件触发的话,当然得排除第一个事件触发的是关闭程序这样的极端情况, 也就是说第一个事件触发后第二个事件触发的条件还能被满足,那么第二个事件被执行是一点问题都没有的。
好吧!直接上你所说的那个例子的源码,拷贝即可运行:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestJframe {
public static void main(String args[]) {
// 声明一个JFrame对象
final JFrame jf = new JFrame("1");
// 设置JFrame的大小
jf.setSize(360, 360);
// 声明一个Button并设置其宽和高
JButton b1 = new JButton("b1");
b1.setSize(180, 60);
// 将Button添加到JFrame的南部,注意JFrame默认的布局是BorderLayout
jf.add(b1, BorderLayout.SOUTH);
// 设置JFrame可见
jf.setVisible(true);
// 为按钮1设置监听器
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// 设置第一个窗口不可见
jf.setVisible(false);
// 申请第二个窗口和第二个按钮等
final JFrame jf2 = new JFrame("2");
jf2.setSize(360, 360);
JButton b2 = new JButton("b2");
b2.setSize(100, 60);
jf2.add(b2, BorderLayout.NORTH);
// 显示第二个窗口
jf2.setVisible(true);
// 为第二个按钮设置监听器
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 当点击第二个按钮时第二个窗口变小了,说明第二个按钮的事件被触发
jf2.setSize(240, 240);
}
});
}
});
}
}
倒霉的小三
answered 12 years, 7 months ago