有些变态的Java内部类用法

 

 

import java.awt.Button;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class StuDialog extends Frame{
  private static final long serialVersionUID = 1L;
  boolean inited = false;
  private TextField field = new TextField(10);
  Button button1 = new Button("打开模态对话框");
  Button button2 = new Button("打开非模态对话框");
  @Override
  public void setVisible(boolean b) {
    if(inited == false)
    {
      add(field,"North");
      add(button1,"East");
      add(button2,"Center");
      setSize(300300);
      addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
          e.getWindow().dispose();
        }
        
      });
      button1.addActionListener(new ActionListener() {
        
        @Override
        public void actionPerformed(ActionEvent e) {
          new Dialog(StuDialog.this,true){
            private static final long serialVersionUID = 1L;
            TextField field = new TextField(10);
            Button button = new Button("确定");
            boolean inited = false;
            @Override
            public void setVisible(boolean arg0) {
              // TODO Auto-generated method stub
              if(inited == false)
              {
                add(field,"North");
                add(button,"Center");
                addWindowListener(new WindowAdapter() {
                  @Override
                  public void windowClosing(WindowEvent e) {
                    e.getWindow().dispose();
                  }
                });
                button.addActionListener(new ActionListener() {
                  @Override
                  public void actionPerformed(ActionEvent e) {
                    StuDialog.this.field.setText(field.getText());
                    ((Windowbutton.getParent()).dispose();
                  }
                });
                setSize(100,100);
                inited = true;
              }
              super.setVisible(arg0);
            }
          }.setVisible(true);
        }
      });
      button2.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
          new Dialog(StuDialog.this,false){
            private static final long serialVersionUID = 1L;
            TextField field = new TextField(10);
            Button button1 = new Button("确定");
            Button button2 = new Button("应用");
            boolean inited = false;
            @Override
            public void setVisible(boolean arg0) {
              // TODO Auto-generated method stub
              if(inited == false)
              {
                add(field,"North");
                add(button1,"East");
                add(button2,"Center");
                addWindowListener(new WindowAdapter() {
                  @Override
                  public void windowClosing(WindowEvent e) {
                    e.getWindow().dispose();
                  }                
                });
                button1.addActionListener(new ActionListener() {
                  @Override
                  public void actionPerformed(ActionEvent e) {
                    StuDialog.this.field.setText(field.getText());
                    ((Window)(button1.getParent())).dispose();
                  }
                });
                button2.addActionListener(new ActionListener() {
                  @Override
                  public void actionPerformed(ActionEvent e) {
                    StuDialog.this.field.setText(field.getText());
                  }
                });
                setSize(100100);
                inited = true;
              }
              super.setVisible(arg0);
            }
            
          }.setVisible(true);
        }
      });
      inited = true;
    }
    super.setVisible(b);
  }
  public static void main(String[] args){
    StuDialog instance = new StuDialog();
    instance.setVisible(true);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值