佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 788|回复: 2

Dialog Box (java) 的问题!!!

[复制链接]
发表于 27-12-2005 01:27 AM | 显示全部楼层 |阅读模式
我的dialog box不能close....我试用过hide()和dispose() 的方法不能

code:
//link declare as global variable
public void connect()
    {
            link = new Dialog(this,"Connect",true);
            TextField url = new TextField("http://computing.unn.ac.uk/staff/cgpb2/web/Clients.html",40);
            Button bttGo = new Button("GO");
            Button cancel = new Button("CANCEL");
            Label lblurl = new Label("Url :");
           
            Panel west = new Panel(new BorderLayout());
            Panel east = new Panel(new BorderLayout());
           
           
                west.add("West",lblurl);   
            west.add("Center",url);
            east.add("West",bttGo);
           
           
            link.setLayout(new BorderLayout());
            link.add("East",east);
            link.add("West",west);
            link.resize(380,60);
            link.show();
           
                bttGo.addActionListener
            (
               new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            link.hide();
                        }
                    }
            );
           
    }
回复

使用道具 举报


ADVERTISEMENT

发表于 27-12-2005 07:05 PM | 显示全部楼层
原帖由 momo99t 于 27-12-2005 01:27 AM 发表
我的dialog box不能close....我试用过hide()和dispose() 的方法不能

code:
//link declare as global variable
public void connect()
    {
            link = new Dialog(this,"Connect",true);
  ...


你好!不能close是因为你没有加addWindowListener。 Dialog 的default close bahavior 是不会帮你dispose你的Dialog。

你只须加以下statement就行了。


  1. connectDialog.addWindowListener(new WindowAdapter(){
  2.             public void windowClosing(WindowEvent e) {
  3.                 connectDialog.dispose();
  4.             }
  5.         });

复制代码

还有,你的link.hide()应该改用setVisible(false),因为link.hide()已经deprecated 了.如果你要release connectDialog 的 resource的话, 你应改用connectDialog.dispose();

如果你有的选择的话,我建议你用swing, 因为awt比较旧,很basic,但不能说被弃用,因为swing 是built on top of it。

怕你不懂我说什么东东,唯有给个例子吧。


  1. import java.awt.BorderLayout;
  2. import java.awt.Button;
  3. import java.awt.Dialog;
  4. import java.awt.Dimension;
  5. import java.awt.Frame;
  6. import java.awt.event.MouseAdapter;
  7. import java.awt.event.MouseEvent;
  8. import java.awt.event.WindowAdapter;
  9. import java.awt.event.WindowEvent;

  10. public class MyDialog extends Frame{
  11.     private Button openConnectDialog;
  12.    
  13.     public MyDialog (){
  14.         super("MyDialog");
  15.         initComponents();
  16.     }
  17.    
  18.     private void initComponents() {
  19.         openConnectDialog  = new Button("Open Connect Dialog");
  20.         openConnectDialog .addMouseListener(new MouseAdapter(){
  21.            public void mouseClicked(MouseEvent e) {
  22.                handleOpenConnectDialog();
  23.             }
  24.         });
  25.         
  26.         this.addWindowListener(new WindowAdapter(){
  27.             public void windowClosing(WindowEvent e) {
  28.                 close();
  29.             }
  30.         });
  31.         this.setLayout(new BorderLayout());
  32.         this.add(openConnectDialog,BorderLayout.NORTH);
  33.         this.setSize(new Dimension(500,500));
  34.     }

  35.     protected void handleOpenConnectDialog() {
  36.         final Dialog connectDialog= new Dialog(this,"Connect Dialog", true);
  37.         
  38.         connectDialog.addWindowListener(new WindowAdapter(){
  39.             public void windowClosing(WindowEvent e) {
  40.                 connectDialog.dispose();
  41.             }
  42.         });
  43.         
  44.         Button killMe = new Button("Kill Me") ;
  45.         killMe.addMouseListener(new MouseAdapter(){
  46.             public void mouseClicked(MouseEvent e) {
  47.                 connectDialog.dispose();
  48.             }
  49.         });

  50.         connectDialog.setLayout(new BorderLayout());
  51.         connectDialog.add(killMe,BorderLayout.NORTH);
  52.         connectDialog.setSize(new Dimension(200,300));
  53.         
  54.         connectDialog.setVisible(true);
  55.     }
  56.    
  57.     protected void close() {
  58.         this.dispose();
  59.     }

  60.     public static void main(String[] args) {
  61.         MyDialog dialog = new MyDialog();
  62.         
  63.         dialog.setVisible(true);
  64.     }   

  65. }
复制代码


有点乱,因为是偷偷用办公时间写,但帮你一点,是吧?
回复

使用道具 举报

 楼主| 发表于 29-12-2005 02:25 AM | 显示全部楼层
谢谢你!我已经解决这问题!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 18-5-2024 08:36 AM , Processed in 0.117234 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表