黑马程序员: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 
f 
;
       
private
 TextField 
tf 
;
       
private
 Button 
but 
;
       
private
 TextArea 
ta 
;
       
private
 Dialog 
d 
;
       
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(
f 
, 
"提示信息-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 
f 
;
       
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() {
             
f 
= 
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. 几个常用的CSS3样式代码以及不兼容的解决办法

    原文:几个常用的CSS3样式代码以及不兼容的解决办法 border-radius实现圆角效果 CSS3代码: -webkit-border-radius:10px; -moz-border-radiu ...

  2. Java对象比较器对泛型List进行排序-Demo

    针对形如:字段1 字段2 字段3 字段n 1 hello 26 7891 world 89 5562 what 55 4562 the 85 452 fuck 55 995 haha 98 455 以 ...

  3. POJ 3928 &amp; HDU 2492 Ping pong(树阵评价倒数)

    主题链接: PKU:http://poj.org/problem?id=3928 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Descript ...

  4. C# 截取图片区域,并返回所截取的图片

    /// <summary> /// 截取图片区域,返回所截取的图片 /// </summary> /// <param name="SrcImage" ...

  5. Ubuntu12.10无法安装openssh-server[已解决]

    因为要在Ubuntu下搞些东西,家里的台式有Deepin2013,但是发现有很多依赖的问题,实在不想解决,就到win7下用VBox安装了Ubuntu.打算使用SourceCRT连接虚拟机,但是在安装在 ...

  6. Lightdm:奔跑吧GUI[已解决]

    Fedora替换gdm为lightdm解决无法登陆问题 前两天安装Codeblocks,这货安装了很多包和依赖,直接导致我重启进步去界面,卡在fedora LOGO处,如下 实在忧伤,已经因为折腾不知 ...

  7. 【蜗牛—漫漫IT路之大学篇(九) 】

    再来一篇叨叨的博客 近期,状态还是那个状态,人还是那个人. 前两天,感冒了,可能是宿舍阴面的事吧.然后,中午睡觉的时候穿着短袖披了一件外套,然后鼻子就不通气了.只是,前天晚上,我骑着崔国强的车子跑了不 ...

  8. eclipse在使用git

    一些eclipse已经自带GIt该,不要安装. 假设,再想想安装.能够卸载GIT,卸载 不同eclipse卸载是不一样的: 1.在Eclipse中依次点击菜单"Help"-> ...

  9. UML基础概念

    UML概述 uml简介 uml(unified Modeling Language )为面向对象软件设计提供统一的.标准的.可视化的建模语言.适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程 ...

  10. 【IOS开发】SimPholders的使用

    推荐一个Xocde开发工具 “SimPholders”,能够快速访问到你的模拟器文件夹,最重要的是完全免费! 官方地址