黑马程序员: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. mvc之验证IEnumerable<T> 类型,多选框验证

    原文:mvc之验证IEnumerable<T> 类型,多选框验证 假设我们有这么一种需求,我们要同时添加年级和年级下面的多个班级,我们一般会像下面这种做法. Action中我们这样接收: ...

  2. ASP.NET Web Service中使用Session 及 Session丢失解决方法 续

    原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Sessio ...

  3. [SQL]死锁处理语句

    原文:[SQL]死锁处理语句 引言 今天在群里看到分享的解决死锁的sql语句,就想着这东西以后肯定用的着,就下载下来,在这里记录一下,以后查找也方便. SQL SET QUOTED_IDENTIFIE ...

  4. :link,:visited,:focus,:hover,:active详解

    原文::link,:visited,:focus,:hover,:active详解 CSS 又名 层叠样式表,所谓层叠,就是后面的样式会覆盖前面的样式,所以在样式表中,各样式排列的顺序很有讲究.   ...

  5. Oracle并行查询出错

    1.错误描写叙述 ORA-12801: 并行查询服务器P007中发出错误信号 ORA-01722:无效数字 12801.00000 -"error signaled in parallel ...

  6. C# 对Outlook联系人的增、删、查 

    原文:C# 对Outlook联系人的增.删.查 [转] 注:定义变量 Outlook.Application myOlApp = new Outlook.ApplicationClass(); Out ...

  7. Android项目---webView

    之前用webView的时候,只知道它可以加载出html页面,竟然不知道,它也可以与js进行交互. WebView是一个网络视图,能加载显示网页,可以将它看作一个浏览器.它使用WebKit渲染引擎加载显 ...

  8. 手机网站keyup解决方案

    模糊搜索keyup无效,解决方案如下 //手机网站解决keyup的方法 $(function () { $('#repairsearch').bind('focus', filter_time); } ...

  9. 一键部署mono 免费空间

    一键部署mono 免费空间支持c# 再也不担心伙食费换空间了 一直以来 部署mono 都是很头疼的事情 因为是我在是不熟悉非win环境,今天偶然发现这个项目,挺好的,分享下 https://githu ...

  10. 利用Readability解决网页正文提取问题

    分享: 利用Readability解决网页正文提取问题   做数据抓取和分析的各位亲们, 有没有遇到下面的难题呢? - 如何从各式各样的网页中提取正文!? 虽然可以用SS为各种网站写脚本做解析, 但是 ...