“黑马程序员”学习笔记十

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/*
 * GUI:图形化界面编程,图形化界面一建立,就会开启一个独立的线程
 Component:组件的意思
 Container:容器,一个特殊的组件,该组件可以通过add方法将其他组件添加进来
 Window:窗口      Panel:面板,控件,用于给其他控件分组,可以将一个Frame分成几个面板进行布局
 Frame:框架,帧,一帧指一副静态画面,时间帧指一副静态画面持续的时间   Dialog:对话框,对话体(dialogue 对话)
 FileDialog:文本对话框
 组件Component包含以下成员:
 Button:按钮
 Lable:标签
 Checkbox:复选框
 TextComponent:文档组件(包含TextArea和TextFile)
 TextArea:文档区(多行文本)
 TextFile:文本框(多行文本)
 layout:布局   FlowLayout:流式布局(从左到右)CardLayout:选项卡(卡片布局)
  BorderLayout:边界布局(东南西北中) GridLayout:矩阵布局(网格布局)GridBagLayout非规则矩阵(网格包布局)
 javax.swing包比较强大,适用性强,在awt的基础上建立了一套自己的图形化界面系统
 java.awt包比较依赖系统,调用的是系统底层数据,在不同的系统中显示效果不同,跨平台效果不行
 eclipse编程用的是swt(是eclipse工作者自己编写的,跨平台性强)
 setVisible(boolean b):根据b的值true/false显示/隐藏窗口
 perform:执行,表演
 adapter:适配器,改编者,适应着,适应物
 action:行动,行为,活动
 socket:端口,插座
  */
public class Gui
{
/*
  创建图形化界面
  1.创建Frame窗体
  2.对窗体进行基本设置
  3.定义组件
  4.将组件通过add()方法将组件添加到窗体中
  5.让窗体显示,用setVisible()方法显示
  时间监听机制的特点:
  1.事件源:就是awt包或swing包中的那些图形化界面组件
  2.事件:每一个事件源都有自己特有的对应事件和共性事件
  3.监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中
  4.事件处理:可以自定义处理方式
  接口WindowListionter的子类WindowAdapter(抽象类,它所有的方法都不是抽象的,定义抽象类是为了不让建对象)
  已经实现了WindowListener中的所有抽象方法,我们只要继承自WindowAdapter复写我们需要的方法即可
  
 */
 public static void main(String[] args)
 {
  Frame f=new Frame("my Frame");
  f.setSize(500,200);
  f.setLocation(500,300);
  f.setLayout(new FlowLayout());
  Button b=new Button("my button");
  f.add(b);
  //f.addWindowListener(new MyTest());
  f.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e)
   {
    System.out.println("我关了");
    System.exit(0);
   }
   public void windowActivated(WindowEvent e)
   {
    System.out.println("我活了");
   }
   public void windowOpened(WindowEvent e)
   {
    System.out.println("我被打开了");
   }
  });
  f.setVisible(true);
 }
}
/*class MyTest extends WindowAdapter
{
 public void windowClosing (WindowEvent e)
 {
  System.exit(0);
 }
}*/


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/*
 init是initialization的缩写,意思是设定初始值,初始化
 */
public class GuiAction
{

 public static void main(String[] args)
 {
  new FrameDemo();
 }

}
class FrameDemo
{
 private Frame f;
 private Button b;
 FrameDemo()
 {
  init();
 }
 public void init()
 {
  f=new Frame("myframe");
  //f.setLocation(400,200);
  //f.setSize(500,300);
  f.setBounds(400,200,500,300);//上两行代码的简写
  f.setLayout(new FlowLayout());
   b=new Button("mybutton");
   f.add(b);
   myEvent();
   f.setVisible(true);
 }
 
 public void myEvent()
 {
  f.addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent e)
  {
   System.exit(0);
  }
  });
  //向Frame中添加一个窗体监听器(addWindowListener(参数是WindowListener))
  /*
   按钮也可以是一个事件源,它也有添加监听器的方法addActionListioner(参数是ActionListioner)
  只要方法超过3个包括3个就有适配器
   */
  b.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.out.println("按钮退出");
    System.exit(0);
   }
  });
 }
}


import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class LieChuNeiRongMuLu
{
 private Frame f;
 private TextField tf;
 private Button b;
 private TextArea ta;
 private Dialog d;
 private Label l;
 private Button lb;
 LieChuNeiRongMuLu()
 {
  f=new Frame("myFrame");
  f.setBounds(500,300,600,400);
  f.setLayout(new FlowLayout());
  tf=new TextField(40);
  b=new Button("转到");
  ta=new TextArea(15,50);
  f.add(tf);
  f.add(b);
  f.add(ta);
  d=new Dialog(f,"提示信息",true);//true是将Dialog前置,不操作Dialog无法操作窗口
  d.setBounds(550,350,300,100);
  d.setLayout(new FlowLayout());
  l=new Label("");
  //l.setText("");
  d.add(l);
  lb=new Button("确定");
  d.add(lb);
  myEvent();
  f.setVisible(true);
 }
 public void myEvent()
 {
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  b.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    function();
   }
  });
  tf.addKeyListener(new KeyAdapter(){
   public void keyPressed(KeyEvent e)
   {
    if(e.getKeyCode()==KeyEvent.VK_ENTER)
     function();
   }
  });
  lb.addMouseListener(new MouseAdapter(){
   public void mouseClicked(MouseEvent e)
   {
    d.setVisible(false);
   }
  });
  d.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    d.setVisible(false);
   }
  });
 }
 public void function()
 {
  String text=tf.getText();//获取文本中的内容
  //ta.setText("");将文本区清空
  //ta.setText(text);将文本内容写到文本区
  File file=new File(text);
  if(file.exists()&&file.isDirectory())
  {
   ta.setText("");
   String[] names=file.list();
   for(String s:names)
   {
    ta.append(s+"\r\n");
   }
  }
  else
  {
   String str="你输入的"+text+"有误,请重输";
   l.setText(str);
   d.setVisible(true);
  } 
 }
 public static void main(String[] args)
 {
  new LieChuNeiRongMuLu();
 }

}


import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

//menubar:菜单栏,菜单条,可以向里面添加menu,menuItem(菜单条目)是菜单中的一员是最小的
//menu里面可以添加menu和menuItem,
public class MakeMenu
{
 private static Frame f;
 private static MenuBar mb;
 private static Menu m,mi;
 private static MenuItem m1,m2,open,save,tuichu;//是做子菜单用的
 private static FileDialog od,sd;
 private static TextArea ta;
 private static File file;
  MakeMenu()
 {
  f=new Frame("myFrame");
  f.setBounds(350,150,600,400);
  //f.setLayout(new FlowLayout());用流布局文本区很难看
  mb=new MenuBar();
  m=new Menu("文件");
  m1=new MenuItem("bage");
  m2=new MenuItem("class");
  open=new MenuItem("打开");
  save=new MenuItem("保存");
  mi=new Menu("新建");
  tuichu=new MenuItem("退出");
  od=new FileDialog(f,"我的打开",FileDialog.LOAD);
  sd=new FileDialog(f,"我的保存",FileDialog.SAVE);
  ta=new TextArea();
  mi.add(m1);
  mi.add(m2);
  m.add(open);
  m.add(mi);
  m.add(save);
  m.add(tuichu);
  f.setMenuBar(mb);
  f.add(ta);//默认边界布局
  mb.add(m);
  //f.show();
  myEvent();
  f.setVisible(true);
 }
 public void myEvent()
 {
  open.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e)
   {
    od.setVisible(true);
    String dir=od.getDirectory();
    String name=od.getFile();
    System.out.println(dir+"....."+name);
    if(dir==null||name==null)
     return;
    ta.setText("");
    File file=new File(dir,name);
    try
    {
     BufferedReader br=new BufferedReader(new FileReader(file));
     String line=null;
     while((line=br.readLine())!=null)
     {
      ta.append(line+"\r\n");
     }
     br.close();
    }
    catch(IOException ioe)
    {
     throw new RuntimeException("文件打开失败");
    }
   }
  });
  save.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e)
   {
    if(file==null)
    {
     sd.setVisible(true);
     String dir=sd.getDirectory();
     String name=sd.getFile();
     System.out.println(dir+"....."+name);
     if(dir==null||name==null)
      return;
     file=new File(dir,name);
    }
    try
    {
     BufferedWriter bw=new BufferedWriter(new FileWriter(file));
     String text=ta.getText();
     bw.write(text);
     bw.close();
    }
    catch(IOException ioe)
    {
     throw new RuntimeException("保存失败");
    }
   }
  });
  f.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  tuichu.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e)
   {
    System.exit(0);
   }
  });
 }
 public static void main(String[] args)
 {
  new MakeMenu();
 }

}


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MouseAndKeyEvent
{

 public static void main(String[] args)
 {
  new MyEvent();
 }
}
class MyEvent
{
 private Frame f;
 private Button b;
 private TextField tf;
 MyEvent()
 {
  tf=new TextField(20);
  f=new Frame("myFrame");
  f.setBounds(400,300,500,200);
  b=new Button("myButton");
  f.add(tf);
  f.add(b);
  f.setLayout(new FlowLayout());
  myEvent();
  f.setVisible(true);
 }
 public void myEvent()
 {
  f.addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent e)
  {
   System.exit(0);
  }
  });
  b.addMouseListener(new MouseAdapter()
  {
   private int count=1;
   private int clickCount=1;
   public void mouseEntered(MouseEvent e)
   {
    System.out.println("鼠标进入"+count++);
   }
   public void mouseClicked(MouseEvent e)
   {
    if(e.getClickCount()==2)
      System.out.println("鼠标双击"+clickCount++);
    if(e.getClickCount()==1)
     System.out.println("鼠标点击"+clickCount++);
   }
  });
  b.addKeyListener(new KeyAdapter()
  {
   public void keyPressed(KeyEvent e)
   {
    //e.getKeyChar();获取所按键的字符(单字符)
    //e.getKeyCode();获取所按键的值
    //e.getKeyText(int);获取值所代表的键(可以是多字符键)
    //System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
    
      if(e.getKeyCode()==KeyEvent.VK_ESCAPE);
     System.exit(0);
    if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
     System.out.println("ctrl+enter");
   }
  });
  tf.addKeyListener(new KeyAdapter(){
   public void keyPressed(KeyEvent e)
   {
    int code=e.getKeyCode();
    if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
    { 
     System.out.println("非法字符");
     e.consume();
    }
   }
  });
  b.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e)
   {
    System.out.println("按钮活动");
   }
  });
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值