`
AlexShaw
  • 浏览: 12875 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_java学习日记_Java基础_GUI

 
阅读更多

--------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

用户交互方式

1 DOS命令行不利于记忆

2 图像化界面

专门用于图像化界面的包:java.awt,javax.swing

Java.awt:比较依赖于系统,跨平台性差重量级控件

Javax.swint:基于awt,增强了移植性,轻量级组件

Eclipse用的是swt

Component

Container(容器),window panel(面板)

Buttoncheckboxlabel textcomponent textarea textField

Container作为一个组件,可以添加组件是他的特点

流式布局:默认居中

边界式布局:必须指定边界,否则默认全局中添加新组建就覆盖

网格式布局:分格,组件存在于格子中

卡片式布局:

网格包布局:

上面边界,下面流式布局:先把窗体进行大区快的划分,然后每个区块都加一个Panel

然后在panel中加控件

Container内部封装了一个集合,因为他可以根据角标来添加元素

图形化界面是由另外一个线程控制的,创建一个图像化界面就是创建一个线程

/*

 * 1 创建窗体

 * 2 设置窗体属性,大小是否可见

 * 3 设置布局管理

 * 4 添加控件

 * */

    publicstaticvoid main(String[] args) {

       //Frame有一个默认边界布局,全部剧中填充

       Frame f = new Frame("MYAWT");

       //设置该窗口是否可见

       f.setVisible(true);

       //设置窗口大小

       f.setSize(500, 300);

       //设置窗口位置

       f.setLocation(200, 100);

       //设置布局管理

       f.setLayout(new FlowLayout());

       //按钮

       Button b = new Button("提交");

       f.add(b);

       System.out.println("1");

    }

事件监听机制

包括事件源,事件,监听器,处理方式

事件源:就是普通的图形界面组件

事件:每一个事件源都有自己的特有的对应事件,和共性事件

监听器:将可以触发某一个事件的动作都已经封装到了监听器中

以上三者都已定义好了,我们要做的事情是对产生的动作进行处理

f.addWindowListener(new event());

 

class event extends WindowAdapter

{

 

    @Override

    publicvoid windowClosing(WindowEvent e) {

       //System.out.println("关闭");

       System.exit(0);

    }

 

    @Override

    publicvoid windowActivated(WindowEvent e) {

       //只要该窗口在最前端,就会触发该方法

       System.out.println("最前端");

    }

 

    @Override

    publicvoid windowOpened(WindowEvent e) {

       System.out.println("打开窗口");

    }

   

}

分离事件和界面

publicclass Test02 {

 

    //定义全局变量都能访问到

    private Frame f;

    private Button b;

   

    public Test02() {

       init();

    }

    //将事件和图像化界面分离

    publicvoid init(){

       f = new Frame("测试");

       b = new Button("a");

       //使用一个函数来设置窗口位置和大小

       f.setBounds(100, 100, 300, 300);

       //布局管理器

       f.setLayout(new FlowLayout());

       f.setVisible(true);

       //定义按钮

       b = new Button();

       f.add(b);

       event();

    }

   

    publicvoid event()

    {

       f.addWindowListener(new WindowAdapter() {

 

           @Override

           publicvoid windowActivated(WindowEvent e) {

              System.out.println("1");

           }

 

           @Override

           publicvoid windowClosing(WindowEvent e) {

              System.out.println("1");

           }

 

           @Override

           publicvoid windowOpened(WindowEvent e) {

              System.out.println("1");

           }

       });

       //它是少数没有适配器接口的其中一个

       b.addActionListener(new ActionListener() {

          

           @Override

           publicvoid actionPerformed(ActionEvent arg0) {

              System.out.println("asd");

           }

       });

    }

    publicstaticvoid main(String[] args) {

       new Test02();

    }

}

添加监听

publicclass Test03 {

 

    //定义全局变量都能访问到

    private Frame f;

    private Button b;

    private TextField t;

   

    public Test03() {

       init();

    }

    //将事件和图像化界面分离

    publicvoid init(){

       f = new Frame("测试");

       //初始化指定列数

       t = new TextField(40);

       //定义按钮

       b = new Button("test");

       t.isVisible();

       //使用一个函数来设置窗口位置和大小

       f.setBounds(300, 300, 600, 500);

       //布局管理器

       f.setLayout(new FlowLayout());

       f.setVisible(true);

       f.add(t);

       f.add(b);

       event();

    }

    publicvoid event()

    {

       //活动监听,只要按钮被活动就会执行,如果规定了该监听又规定了其他监听,其他监听先执行,因为其他监听更具体

       b.addActionListener(new ActionListener() {

           @Override

           publicvoid actionPerformed(ActionEvent arg0) {

              // TODO Auto-generated method stub

           }

       });

      

       b.addMouseListener(new MouseListener() {

           //进入E为鼠标事件的对象

           @Override

           publicvoid mouseExited(MouseEvent e) {

              System.out.println("离开");

           }

           //离开

           @Override

           publicvoid mouseEntered(MouseEvent e) {

              System.out.println("进入");

           }

       });

       b.addKeyListener(new KeyAdapter() {

           @Override

           publicvoid keyTyped(KeyEvent arg0) {

              // TODO Auto-generated method stub

             

           }

           @Override

           publicvoid keyPressed(KeyEvent e) {

              System.out.println(e.getKeyText(e.getKeyCode())+"!!!"+e.getKeyCode());

              //esc关闭窗口

              if(e.getKeyCode() == KeyEvent.VK_ESCAPE)

                  System.exit(1);

              //组合键

              if(e.isControlDown()&&e.getKeyCode() == KeyEvent.VK_ENTER)

              {

                  //e.isShiftDown();

                  //e.isAltDown()

                  System.exit(2);

              }

           }

          

      

       });

       t.addKeyListener(new KeyAdapter() {

 

           @Override

           publicvoid keyPressed(KeyEvent e) {

              int i = e.getKeyCode();

              if(!(i>=KeyEvent.VK_0 && i<=KeyEvent.VK_9))

              {

                  //如果输入的是非数字则不让输入

                  e.consume();

              }

           }

          

       });

    }

}

练习

b.addActionListener(new ActionListener() {

          

           @Override

           publicvoid actionPerformed(ActionEvent arg0) {

              String string = t.getText();

              File file = new File(string);

              if(file.exists()&&file.isDirectory())

              {

                  String[] str = file.list();

                  for(String s : str)

                  {

                     ta.append(s+"\r\n");                         

                  }

              }

              t.setText("");

           }

       });

对话框:

Dialog依赖于别的对话框存在,所以需要将他以来的对话框对象作为参数传递进去,第二个参数确定该窗口是否是模化窗口

开始设置该对话框为不可见,当触发某些事件时修改为可见,然后当点击确定或者关闭则再次设置为不可见,不能system.exit,否则整个程序关闭

else

              {

              d.setVisible(true);

              }

菜单:

菜单栏,菜单,菜单项,子菜单

    private Frame f;

    private MenuBar mb;

    private Menu m;

    private Menu m1 ,m2 ;

    private MenuItem zm1,zm2;

   

   

    public Test06() {

       f = new Frame();

       //这三步缺一不可

       f.setBounds(300, 300, 500, 500);

       f.setLayout(new FlowLayout());

       f.setVisible(true);

       mb = new MenuBar();

       m = new Menu("文件");

       //如果想要有子菜单 new menu,如果不想有子菜单 new menuItem

       m1 = new Menu("文件1");

       m2 = new Menu("文件2");

       zm1 = new MenuItem("1");

       zm2 = new MenuItem("2");

       mb.add(m);

       m.add(m1);

       m.add(m2);

       //添加子菜单

       m1.add(zm1);

       m1.add(zm2);

       //添加菜单

       f.setMenuBar(mb);

    }

使用界面打开保存文件

publicclass Test06 {

 

    private Frame f;

    private MenuBar mb;

    private Menu m;

    private Menu m1 ,m2 ;

    private MenuItem zm1,zm2;

    private FileDialog open;

    private FileDialog save;

    private TextArea ta;

    private File file;

   

   

    public Test06() {

       f = new Frame();

       //这三步缺一不可

       f.setBounds(300, 300, 500, 500);

       f.setLayout(new FlowLayout());

       f.setVisible(true);

       mb = new MenuBar();

       m = new Menu("文件");

       //如果想要有子菜单 new menu,如果不想有子菜单 new menuItem

       m1 = new Menu("文件1");

       m2 = new Menu("打开");

       zm1 = new MenuItem("打开");

       zm2 = new MenuItem("保存");

       mb.add(m);

       m.add(m1);

       m.add(m2);

       //添加子菜单

       m1.add(zm1);

       m1.add(zm2);

       open = new FileDialog(f, "打开",FileDialog.LOAD);

       save = new FileDialog(f, "保存",FileDialog.SAVE);

       //添加菜单

       f.setMenuBar(mb);

        ta = new TextArea(30,50);

       f.add(ta);

       event();

    }

    publicvoid event()

    {

       zm1.addActionListener(new ActionListener() {

          

           @Override

           publicvoid actionPerformed(ActionEvent e) {

              ta.setText("");

              open.setVisible(true);

              //返回的是文件名

              //System.out.println(open.getFile());

              file = new File(open.getDirectory()+open.getFile());

              try {

                  BufferedReader br = new BufferedReader(new FileReader(file));

                  String line = null;

                  while((line = br.readLine())!=null)

                  {

                     ta.append(line+"\r\n");

                  }

              } catch (Exception e1) {

                  thrownew RuntimeException("读取失败");

              }

           }

       });

       zm2.addActionListener(new ActionListener() {

          

           @Override

           publicvoid actionPerformed(ActionEvent e) {

              save.setVisible(true);

              file = new File(save.getDirectory(),save.getFile());

              try {

                  BufferedWriter bw = new BufferedWriter(new FileWriter(file));

                  bw.write(ta.getText());

                  bw.close();

              } catch (IOException e1) {

                  thrownew RuntimeException("保存失败");

              }

              

           }

       });

    }

    publicstaticvoid main(String[] args) {

       new Test06();

    }

}

打包jar –cvf …jar 文件夹名

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics