在window中没有定义函数close()

解决方案 »

  1.   

    我的想法是:点击界面B中的按钮时,让界面B不可见,同时在让界面A出现。
    在B中:setVisible(false);同时:new A();
    你试试看。
      

  2.   

    dispose 画面就已经关闭了啊 package test.ww.swing;import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;import javax.swing.JButton;
    import javax.swing.JFrame;public class MyTest {
        public static void main(String[] args) {
            JFrame A = new JFrame("A");
            JButton openB = new JButton("打开B");
            A.add(openB);
            A.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            A.setSize(400, 300);
            A.setVisible(true);
            openB.addActionListener(new ActionListener() {            @Override
                public void actionPerformed(ActionEvent e) {
                    final JFrame B = new JFrame("B");
                    B.setSize(400, 300);
                    B.setBackground(Color.BLACK);
                    B.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
                    B.setVisible(true);
                    B.addWindowListener(new WindowListener() {                    @Override
                        public void windowOpened(WindowEvent e) {
                            // TODO Auto-generated method stub                    }                    @Override
                        public void windowIconified(WindowEvent e) {
                            // TODO Auto-generated method stub                    }                    @Override
                        public void windowDeiconified(WindowEvent e) {
                            // TODO Auto-generated method stub                    }                    @Override
                        public void windowDeactivated(WindowEvent e) {
                            // TODO Auto-generated method stub                    }                    @Override
                        public void windowClosing(WindowEvent e) {
                            B.dispose();
                        }                    @Override
                        public void windowClosed(WindowEvent e) {
                            // TODO Auto-generated method stub                    }                    @Override
                        public void windowActivated(WindowEvent e) {
                            // TODO Auto-generated method stub                    }
                    });
                }
            });    }
    }
      

  3.   

    可以有以下两种解决方法:
    ①.如果你是用awt写图形用户界面,就可以让B界面声明继承windowActionListener接口,并实现里面的抽象方法。
    ②.如果你是用javax.swing编写图形用户界面,就可以直接用this.setDefaultCloseOperation(JFrame.EXIT_ON_CLoSE);该方法就可以实图形界面B的关闭!
      

  4.   

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);用这句 妥妥的 
      

  5.   

    对于6、7、8楼的方法,我适应的类swt,不是swing,所以你们的方法在此处不可行
      

  6.   


    对于你的方法一是可以实现,但是具体要怎么实现啊?在window中没有方法close()
      

  7.   

    关闭就dipose();
    隐藏就setVisible(false);
      

  8.   

    我使用的awt,不是swing,所以dispose()不行
      

  9.   

    上次我也看到 谁说window中没有定义close()函数但是 W3school中却有该函数?
    http://www.w3school.com.cn/htmldom/met_win_close.asp
      

  10.   


    在window对象中既然有open()那么就会有一个close()不然只是让你打开window  无法关闭?
      

  11.   


    看看这个官网的http://www.w3school.com.cn/htmldom/met_win_close.asp
      

  12.   


    谢谢你啊,不过我感觉HTML语法与java中的awt应该不同,上次看过你的贴之后,我就试了,但是提示是在java awt类中没有window.close(),
      

  13.   

    int close = frame.getDefaultCloseOperation();
    if(1 == close){
    frame.dispose();
    }
      

  14.   

    为什么要用awt这种过时的东西呢,有swing为什么不用呢
      

  15.   

    setVisibel(true)或者false 用监听器的方法隐藏你想要影藏的窗体,显示你显示的窗体。
      

  16.   

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLoSE);使图形界面B的关闭!
      

  17.   

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLoSE);使图形界面B的关闭!
      

  18.   

    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
      

  19.   

    声明一下:我使用的java中的awt而不是swing,而setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE) 是swing中的解决方法 
      

  20.   

    直接由你那个frame的对象调用dispose(),然后下一行代码写生成B窗口