黑马程序员: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. Java程序员应该知道的10个Eclipse调试技巧

    Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧. 1 条件断点 2 异常断点 3 监视点 4 评估/检查 5 修改变量值 ...

  2. 解决Shockwave flash在chrome该浏览器崩溃

    越来越多的人开始使用chrome浏览器,很多用户都遇到过flash崩溃.有时重启chrome为了解决,有时不可能使用chrome无论打开什么网站是什么flash.这个问题是非常小的Firefox或IE ...

  3. 如何配置Spring的XML文件及使用

    App.config <?xml version="1.0" encoding="utf-8" ?> <configuration> & ...

  4. DataInputStream(二进制输入流)和DataOutputStream二进制输出流(注意:in是从本地文件输入到程序中,out是从程序输出到本地种)

    //切记以数据类型输出就以什么数据类型读入, //例如: dos.writeInt(100);写入,读取:dis.readUTF()有时会出现意想不到的错误,所以要时刻记得以数据类型输出就以什么数据类 ...

  5. c#编写的基于Socket的异步通信系统

    c#编写的基于Socket的异步通信系统 SanNiuSignal是一个基于异步socket的完全免费DLL:它里面封装了Client,Server以及UDP:有了这个DLL:用户不用去关心心跳:粘包 ...

  6. ftp服务器的搭建

    /etc/vsftpd.conf :ftp的配置文件 anonymous_enable=YES:是否支持匿名登录 local_enable=YES:是否支持本地登录 /etc/ftpusers:ftp ...

  7. ACE编译运行错误解决

    使用VS2010编译运行ACE版本号为6.0.1 按照网上步骤添加config.h,在ACE_wrappers/ace目录下 ,新建 config.h 文件加入以下内容: #include " ...

  8. twisted学习笔记 No.1

    原创博文,转载请注明出处 . 1.安装twisted ,然后安装PyOpenSSL(一个Python开源OpenSSL库),这个软件包用于给Twisted提供加密传输支持(SSL).最后,安装PyCr ...

  9. Python Learing(一):Basic Grammar

    装了python2.7,去图书馆借了python入门经典,暂且简单写下学习笔记,以供自己回忆 学习笔记(一)主要是基础语法部分: 1.python中数字以及字符串的使用; 2.输入与输出语句; 3.逻 ...

  10. 对于vijos11.2模拟赛

    特意起了个傻逼标题,只是想提醒一下自己以后不要犯逗(所以应该没有什么神犇点进来吧?) T1,T3 当场写的时候就觉得是不可写的,看了题解之后还是觉得不可写,人弱没办法.到了这个时候也懒得管这么难的东西 ...