黑马程序员——java图形界面GUI

时间:2023-01-27 13:04:25

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

 

GUI,Graphical User Interface(图形用户接口)

用图形的方式,来显示计算机操作的界面,这样更方便更直接。

JavaGUI提供的对象都存在java.Awtjavax.Swing两个包中。

    Awt与Swingjava.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。

javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全 由Java实现。增强了移植性,属轻量级控件。

Container:容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

布局管理器:

常见的布局管理器有:

(1)FlowLayout

(2)BorderLayout

(3)GridLayout

(4)CardLayout

(5)GridBagLayout

 

黑马程序员——java图形界面GUI

 

事件监听机制

(1)确定事件源(容器或组件)

(2)通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。

(3)该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。

(4)一般用匿名内部类来表示。

(5)在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。

(6)事件触发后会把事件打包成对象传递给该变量。(其中包括 事件源对象。通过getSource()或者,getComponent()获取。)

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class MyMenuTest

{

private Frame f;

private MenuBar bar;

private TextArea ta;

private Menu fileMenu;

private MenuItem openItem,saveItem,closeItem;

private FileDialog openDia,saveDia;

private File file;

MyMenuTest()

{

init();

}

public void init()

{

f = new Frame("my window");

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

bar = new MenuBar();

ta = new TextArea();

fileMenu = new Menu("文件");

openItem = new MenuItem("打开");

saveItem = new MenuItem("保存");

closeItem = new MenuItem("退出");

fileMenu.add(openItem);

fileMenu.add(saveItem);

fileMenu.add(closeItem);

bar.add(fileMenu);

f.setMenuBar(bar);

openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);

saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);

f.add(ta);

myEvent();

f.setVisible(true);

}

private void myEvent()

{

saveItem.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.flush();

bufw.close();

}

catch (IOException ex)

{

throw new RuntimeException();

}

}

});

openItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

openDia.setVisible(true);

String dirPath = openDia.getDirectory();

String fileName = openDia.getFile();

// System.out.println(dirPath+"..."+fileName);

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("读取失败");

}

}

});

closeItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

System.exit(0);

}

});

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

public static void main(String[] args) 

{

new MyMenuTest();

}

}

 

如何制作可以双击执行的jar包呢?
1,将多个类封装到了一个包(package)中。
2,定义一个jar包的配置信息。
定义一个文件a.txt 。文件内容内容为:
Main-Class:(空格)包名.类名(回车)
3,打jar包。
jar -cvfm my.jar a.txt 包名
4,通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息。

 

 个人总结:

     学习了java的一些基础的UI知识,比如创建简单的窗体,菜单等!最重要的是事件的监听机制!比如点击关闭,文件关闭,打开文件等,要明白什么是事件源,什么是事件,以及监听事件的监听器!这样才能完整的创建一个窗体界面

 

 

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


                                                         详细请查看:http://edu.csdn.net/heima