黑马程序员技术交流社区

标题: GUI问题 [打印本页]

作者: 小小太阳    时间: 2013-5-24 12:17
标题: GUI问题
  1. public class guidemo2 {
  2. public static void main(String[] args) {
  3. new listenerdemo();
  4. }
  5. }
  6. class listenerdemo
  7. {
  8. private Frame f;
  9. private Button b;
  10. private TextField tf;
  11. listenerdemo()
  12. {
  13.   demo();
  14. }
  15. public void demo()
  16. {
  17.   f = new Frame();
  18.   b = new Button("确定");
  19.   tf = new TextField(30);
  20.   f.setBounds(200, 100, 300, 200);
  21.   f.setLayout(new FlowLayout());
  22.   f.add(b);
  23.   f.add(tf);
  24.     //f.setVisible(true);
  25.   f.addWindowListener(new WindowAdapter(){
  26.    public void windowClosing(WindowEvent e)
  27.    {
  28.     System.exit(0);
  29.    }
  30.    public void windowActivated(WindowEvent e)
  31.    {
  32.     System.out.println("窗体前置");
  33.    }
  34.    public void windowOpened(WindowEvent e)
  35.    {
  36.           System.out.println("窗体打开");
  37.    }
  38.   });
  39.   f.setVisible(true);
  40. }
复制代码
f.setVisible(true);放在最后监听后边和放在监听前边,运行的效果不一样,放在前边,窗体打开时并么有输出窗体打开的文字,谁能给解释一下,

作者: 张旺达    时间: 2013-5-24 13:48
我的看法:

第一,哥们,你复制的时候最后少了个括号,前面也没有导包。

第二,f.setVisible(true);的作用就是设置可见嘛,你要是放在监听的前面的话,只是把f.setVisible(true)以前的东西给设置了,但是监听没有设置,所以“窗体前置和窗体打开”还仍然处于UNVisible状态。。 所以看不到,一般都是把setVisible(true)放在最后面的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2