java 代码
- /*
- AWT(Abstract Window Toolkit),抽象窗口工具包,SUN公司提供的用于
- 图形界面编程(GUI)的类库。基本的AWT库处理用户界面元素的方法是把这些元素
- 的创建和行为委托给每个目标平台上(Windows、Unix、Macintosh等)的本地
- GUI工具进行处理。例如:如果我们使用AWT在一个Java窗口中放置一个按钮,那
- 么实际上使用的是一个具有本地外观和感觉的按钮。这样,从理论上来说,我们所
- 编写的图形界面程序能运行在任何平台上,做到了图形界面程序的跨平台运行。
- 容器里组件的位置和大小是由布局管理器来决定的。容器对布局管理器的特定
- 实例保持一个引用。当容器需要定位一个组件时,它将调用布局管理器来完成。
- 当决定一个组件的大小时,也是如此。
- 在AWT中,给我们提供了五种布局管理器:BorderLayout //缺省的布局管理器
- FlowLayout
- GridLayout
- CardLayout
- GridBagLayout
- 我们可以通过设置空布局管理器,来控制组件的大小和位置。调用setLayout(null)。
- 在设置空布局管理器后,必须对所有的组件调用setLocation(),setSize()
- 或setBounds(),将它们定位在容器中。
- 更复杂的布局应该依靠开发工具的图形界面设计拖放功能
- */
- package lesson8;
- import java.awt.*;
- import java.awt.event.*;
- public class MyProject {
- /**
- * @param args
- */
- public static void main(String[] args) {
- Frame f = new Frame("mybole");
- f.setSize(600, 400);
- f.setLocation(100, 100);//设置显示位置
- f.setBackground(Color.blue);//设置窗口背景颜色
- // 窗口是个容器,可以向其中增加组件
- // f.setLayout(new BorderLayout(10,10));
- /* GrideLayout 列数通过指定的行数和布局中的组件总数来确定。因此,
- 例如,如果指定了三行和两列,在布局中添加了九个组件,
- 则它们将显示为三行三列。仅当将行数设置为零时,指定列数才
- 对布局有效。*/
- // f.setLayout(new GridLayout(2,2));//两行三列
- /*流布局用于安排有向流中的组件,这非常类似于段落中的文本行。
- 流的方向取决于容器的 componentOrientation 属性,它可能是以下两个
- 值中的一个:
- ComponentOrientation.LEFT_TO_RIGHT
- ComponentOrientation.RIGHT_TO_LEFT
- 流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线
- 上再也没有适合的按钮。*/
- //创建一个新的流布局管理器,具有指定的对齐方式以及指定的水平和垂直间隙。
- f.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
- Button btn1 = new Button("winsun");
- Button btn2 = new Button("weixin");
- Button btn3 = new Button("west");
- Button btn4 = new Button("east");
- Button btn5 = new Button("center");
- f.add(btn1,"North");//设置按钮显示位置,大小写敏感
- f.add(btn2,"South");
- f.add(btn3,"West");
- f.add(btn4,"East");
- f.add(btn5,"Center");
- // f.addWindowListener(new MyWindowListener());//注册一个事件侦听器
- f.addWindowListener(new YourWindowListener());
- f.setVisible(true);//显示窗口 show()方法已过时被setVisible()方法取代
- }
- }
- /*
- //Source-->Override/Implement Methods 自动生成接口方法
- class MyWindowListener implements WindowListener {//自定义一个窗口侦听器
- public void windowActivated(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- public void windowClosed(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- public void windowClosing(WindowEvent e) {
- System.exit(0);
- }
- public void windowDeactivated(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- public void windowDeiconified(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- public void windowIconified(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- public void windowOpened(WindowEvent e) {
- // TODO Auto-generated method stub
- }
- } */
- /*java中已有抽象类WindowAdapter实现了接口WindowListener,不过实现的方法
- * 都为空实现,以待用户继承该抽象类自己实现想要实现的方法
- public abstract class WindowAdapter extends Objectimplements
- WindowListener, WindowStateListener, WindowFocusListener
- 接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦
- 听器对象。
- 扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现
- WindowListener 接口,则您必须定义该接口内的所有方法。此抽象类将所有方
- 法都定义为 null,所以只需针对关心的事件定义方法。)
- 使用扩展的类可以创建侦听器对象,然后使用窗口的 addWindowListener
- 方法向该窗口注册侦听器。当通过打开、关闭、激活或停用、图标化或取消图标化
- 而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent
- 传递给该方法。
- */
- class YourWindowListener extends WindowAdapter {
- public void windowClosing(WindowEvent e) {
- System.exit(0);
- }
- }
java 代码
- package lesson8;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- public class HisFrame {
- public static void main(String[] args) {
- final Frame f = new Frame("http://www.windycool.com");
- f.setSize(600, 400);
- f.setLocation(100, 100);
- // TextField 对象是允许编辑单行文本的文本组件
- // TextField tf = new TextField(20);//建立一个20列的文本域.
- // f.add(tf,"North");//文本域添加到North处
- final TextArea ta = new TextArea();
- f.add(ta);//默认放到Center处
- f.addWindowListener(new WindowAdapter() {//增加一个窗口侦听器
- public void windowClosing(WindowEvent e) {
- System.exit(0);
- }
- });
- MenuBar mb = new MenuBar();
- Menu m1 = new Menu("File");
- Menu m2 = new Menu("Edit");
- MenuItem mi1= new MenuItem("new");
- MenuItem mi2= new MenuItem("open");
- mi2.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent a) {
- /*
- public class FileDialogextends DialogFileDialog 类显示一个对
- 话框窗口,用户可以从中选择文件。
- 由于它是一个模式对话框,当应用程序调用其 show 方法来显示对话框时,
- 它将阻塞其余应用程序,直到用户选择一个文件。
- */
- FileDialog fd = new FileDialog(f,"打开文件",FileDialog.LOAD);
- fd.setVisible(true);
- String str = fd.getDirectory()+fd.getFile();
- if(str!=null) {
- try {
- FileInputStream fis = new FileInputStream(str);
- byte[] buf = new byte[1000*1024];
- int len = fis.read(buf);//读到buf里面
- if(len>=0)
- ta.append(new String(buf,0,len));
- fis.close();
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
- });
- MenuItem mi3= new MenuItem("save");
- MenuItem mi4= new MenuItem("exit");
- mi4.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent a) {
- System.exit(0);
- }
- });//增加一个事件侦听器 , 相应事件 退出
- MenuItem mi5= new MenuItem("copy");
- MenuItem mi6= new MenuItem("paste");
- // 菜单项添加到下拉菜单
- m1.add(mi1);
- m1.add(mi2);
- m1.add(mi3);
- m1.add(mi4);
- m2.add(mi5);
- m2.add(mi6);
- mb.add(m1);//菜单增加到菜单栏
- mb.add(m2);
- f.setMenuBar(mb);//将菜单栏放置到框架窗口
- f.setVisible(true);
- }
- }