黑马程序员:Java基础总结



GUI图形化界面

 
ASP.Net+Android+IO开发

.Net培训
、期待与您交流!





 
GUI(Graphical User Interface)图形化界面编程总结
Java.Awt:Abstract Window ToolKit(抽象窗口工具包)
Javax.Swing:

图形化界面基本设置:
设置窗体大小:setSize(长,宽);
设置窗体位置:setLocation(距离左,距离上);setBounds(长,宽,距离左,距离上);
设置布局:setLayout(new FlowLayout());
使窗体可见:setVisible(true);
事件监听机制:

事件监听机制的特点:
1,事件源。
2,事件。
3,监听器。
4,事件处理。
事件源:就是awt包或者swing包中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。 
我们要做的事情是,就是对产生的动作进行处理

Eg:编写程序,练习图形化界面编程!

import
 java.awt.*;
import
 java.awt.event.*;
import
 java.io.*;


public
 
class 
MyWindowDemo {
       
private
 Frame 

;
       
private
 TextField 
tf 
;
       
private
 Button 
but 
;
       
private
 TextArea 
ta 
;
       
private
 Dialog 

;
       
private
 Label 
lab 
;
       
private
 Button 
okBut 
;

      MyWindowDemo() {
            init();
      }

       
public
 
void 
init() {
             
f
 = 
new
 Frame(
"my window" 
);
             
f
.setBounds(300, 100, 600, 500);
             
f
.setLayout( 
new
 FlowLayout());
             
tf
 = 
new
 TextField(60);
             
but
 = 
new 
Button(
 "转到"
);
             
ta
 = 
new
 TextArea(25, 70);
             
d
 = 
new
 Dialog(


"提示信息-self" 

true
);
             
d
.setBounds(400, 200, 240, 150);
             
d
.setLayout( 
new
 FlowLayout());
             
lab
 = 
new 
Label();
             
okBut
 = 
new 
Button(
 "确定"
);
             
d
.add( 
lab
 );
             
d
.add( 
okBut
 );
             
f
.add( 
tf
);
             
f
.add( 
but
 );
             
f
.add( 
ta
);
            myEvent();
             
f
.setVisible( 
true
 );
      }

       
private
 
void 
myEvent() {
             
okBut
 .addActionListener(
 new
 ActionListener() {
                   
public
 
void 
actionPerformed(ActionEvent e) {
                         
d
.setVisible( 
false
 );
                  }
            });
             
d
.addWindowListener( 
new
 WindowAdapter() {
                   
public
 
void 
windowClosing(WindowEvent e) {
                         
d
.setVisible( 
false
 );
                  }
            });
             
tf
.addKeyListener( 
new
 KeyAdapter() {
                   
public
 
void 
keyPressed(KeyEvent e) {
                         
if
 (e.getKeyCode() == KeyEvent.
 VK_ENTER
)
                              showDir();
                  }
            });
             
but
 .addActionListener(
 new
 ActionListener() {
                   
public
 
void 
actionPerformed(ActionEvent e) {
                        showDir();
                  }
            });
             
f
.addWindowListener( 
new
 WindowAdapter() {
                   
public
 
void 
windowClosing(WindowEvent e) {
                        System. exit(0);
                  }
            });
      }

       
private
 
void 
showDir() {
            String dirPath = 
tf
.getText();
            File dir = 
new
 File(dirPath);
             
if
 (dir.exists() && dir.isDirectory()) {
                   
ta
.setText( 
""
 );
                  String[] names = dir.list();
                   
for
 (String name : names) {
                         
ta
.append(name + 
"\r\n"
 );
                  }
            } 
else
 {
                  String info = 
"您输入的信息:" 
+ dirPath + 
"是错误的。请重输"
 ;
                   
lab
 .setText(info);
                   
d
.setVisible( 
true
 );
            }
      }

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





菜单:

MenuBar 菜单整体;
Menu 包含于MenuBar中;MenuItem包含于Menu中!
以上3个关系添加用add();
将MenuBar放进Frame中用setMenuBar();
FileDialog.LOAD:打开的mode
FileDialog.Save:保存的mode

练习:一个简易的记事本

import 
java.awt.*;
import 
java.awt.event.*;
import 
java.io.*;

public 
class 
MyMenuDemo {
       
private 
Frame 

;
       
private 
TextArea 
ta 
;
       
private 
MenuBar 
mb 
;
       
private 
Menu 
me 
;
       
private 
MenuItem 
miNew 

miSave 

miLoad 
;
       
private 
File 
file 
;
       
private 
FileDialog 
openDia 

saveDia 
;

      MyMenuDemo() {
            init();
      }

       
public 
void 
init() {
             


new 
Frame(
"万琪--记事本" 
);
             
f
.setBounds(300, 100, 650, 600);
             
ta 

new 
TextArea();
             
// ta.setBounds(302,105,400,300);
             
// f.setLayout(new FlowLayout());//为什么设置成了流式布局之后再设置文本区域没有效果
             
mb 

new 
MenuBar();
             
me 

new 
Menu(
"文件(F)" 
);
             
miNew 

new 
MenuItem(
"新建"
);
             
miSave 

new 
MenuItem(
"保存(S)"
);
             
miLoad 

new 
MenuItem(
"打开(O)"
);
             
mb
.add( 
me
);
             
me
.add( 
miNew
);
             
me
.add( 
miLoad
);
             
me
.add( 
miSave
);
             
f
.setMenuBar( 
mb
);
             
f
.add( 
ta
);
             
openDia 

new 
FileDialog(
f

"打开文件"
, FileDialog. 
LOAD
);
             
saveDia 

new 
FileDialog(
f

"保存文件"
, FileDialog. 
SAVE
);
            myEvent();
             
f
.setVisible( 
true
);
      }

       
public 
void 
myEvent() {
             
f
.addWindowListener( 
new 
WindowAdapter() {
                   
public 
void 
windowClosing(WindowEvent e) {
                        System. exit(0);
                  }
            });
             
miLoad
.addActionListener(
new 
ActionListener() {
                   
public 
void 
actionPerformed(ActionEvent e) {
                         
openDia
.setVisible(
true
);
                        String dirPath = 
openDia
.getDirectory();
                        String fileName = 
openDia
.getFile();
                         
if 
(dirPath == 
null 
|| fileName == 
null
)
                               
return
;
                         
ta
.setText( 
""
);
                         
file 

new 
File(dirPath, fileName);
                         
try 
{
                              BufferedReader bufr = 
new 
BufferedReader(
new 
FileReader(
                                           
file
));
                              String line = 
null
;
                               
while 
((line = bufr.readLine()) != 
null
) {
                                     
ta
.append(line + 
"\r\n"
);
                              }
                              bufr.close();
                        } 
catch 
(IOException ex) {
                               
throw 
new 
RuntimeException(
"读取失败"
);
                        }
                  }
            });
             
miSave
.addActionListener(
new 
ActionListener() {
                   
public 
void 
actionPerformed(ActionEvent e) {
                         
if 
(
file 
== 
null
) {
                               
saveDia
.setVisible(
true
);
                              String dirPath = 
saveDia
.getDirectory();
                              String fileName = 
saveDia
.getFile();
                               
if 
(dirPath == 
null 
|| fileName == 
null
)
                                     
return
;
                               
file 

new 
File(dirPath, fileName);
                        }
                         
try 
{
                              BufferedWriter bufw = 
new 
BufferedWriter(
new 
FileWriter(
                                           
file
));
                              String text = 
ta
.getText();
                              bufw.write(text);
                              bufw.close();
                        } 
catch 
(IOException ex) {
                               
throw 
new 
RuntimeException(
""
);
                        }
                  }
            });
      }

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



打jar包的过程:
1、 编译包 jar –cvf jar名 包名
2、 写一个文件main-class: 包名.类名【加个回车】
3、 jar –cvfm jar名 文件名 包名
配置jar执行的过程:
工具---文件夹选项---文件类型---新建---文件扩展名jar
然后确定----高级----修改图标-----open------javaw的路径—jar即可!





 
ASP.Net+Android+IO开发

.Net培训
、期待与您交流!

黑马程序员:Java基础总结----GUI图形化界面的更多相关文章

  1. 黑马程序员——JAVA基础之GUI

    -----Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- GUI(图形用户界面)  GUI •  Graphical User Interface(图形用 ...

  2. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)

    正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G  QQ 1481135711 这是我总 ...

  3. 黑马程序员 Java基础<十八>---> 网路编程

    --------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! --------------- 第一  概述 一.概述: 1.网络模型:OSI参考模型和TCP ...

  4. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  5. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  6. 黑马程序员——JAVA基础之泛型和通配符

    ------- android培训.java培训.期待与您交流! ---------- 泛型:            JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...

  7. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

  8. 黑马程序员——JAVA基础之语法、命名规则

    ------- android培训.java培训.期待与您交流! ---------- 1.java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组. 2.java关键字:被Jav ...

  9. 黑马程序员——JAVA基础之简述设计模式

    ------- android培训.java培训.期待与您交流! ---------- 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓 ...

随机推荐

  1. .net 职责链来实现 插件模式

    .net 职责链来实现 插件模式 插件式的例子 QQ电脑管家,有很多工具列表,点一下工具下载后就可以开始使用了 eclipse ,X Server 等等 插件式的好处 插件降低框架的复杂性,把扩展功能 ...

  2. javascript日历插件

    原文:javascript日历插件 javascript日历插件 最近在尝试着写javascript日历插件,所以也到github上看国外人日历源码,或者国内人写的好点的,也在研究点,虽然看到网上有一 ...

  3. NGUI ScrollView动态加入和删除对象。

    动态加入,基本思想是: 1.先把要加入的元素在编辑器中编辑好,制作成一个prefab. 2.在代码中,动态的生成一个新的对象增加到Grid对象的子对象中.这里利用到了Resources对象,这个对象的 ...

  4. loadrunner常用函数总结

    事务函数:lr_end_sub_transaction 标记子事务的结束以便进行性能分析lr_end_transaction 标记 LoadRunner 事务的结束lr_end_transaction ...

  5. PHP Socket编程 之使用fsockopen()函数

    Socket可以理解为两台计算机相互通信的通道. 用法:使用fsockopen()函数 具体用法详见上篇文章.函数的参数为URL.端口号.一个存放错误编号的变量.一个存放错误信息字符串的变量和超时等待 ...

  6. css3动画实例测试

    1.css3动画属性分析(2016-5-11) 1.transition: 规定属性变换规则,可以这样讲.transition(a,b,c,d); a:要变换的属性: b:过渡时间: c:运动方式: ...

  7. Codeforces 10D LCIS 找出最长公共子和产量增加这个序列 dp

    主题链接:点击打开链接 意甲冠军: 特定n长序列 给定k长序列 求LCIS并输出这个子序列 如有多解输出随意解.. = - = 敲的时候听着小曲儿pre的含义还没有想清楚,万万没想到就过了... #i ...

  8. [转]Windows下搭建PHP开发环境

    原文:http://www.cnblogs.com/pharen/archive/2012/02/06/2340628.html PHP集成开发环境有很多,如XAMPP.AppServ......只要 ...

  9. [转]How To Use CSS3 Media Queries To Create a Mobile Version of Your Website

    CSS3 continues to both excite and frustrate web designers and developers. We are excited about the p ...

  10. ASP.NET MVC Model元数据

    ASP.NET MVC Model元数据(三) 前言 在上篇中我们大概的讲解了Model元数据的生成过程,并没有对Model元数据本身和详细的生成过程有所描述,本篇将会对详细的生成过程进行讲解,并且会 ...