疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java之路,图形界面编程


 

  n AWT(Abstract Window Toolkit),抽象窗口工具包,SUN公司提供的用于图形界面编程(GUI)的类库。基本的AWT库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台上(Windows、Unix、Macintosh等)的本地GUI工具进行处理。例如:如果我们使用AWT在一个Java窗口中放置一个按钮,那么实际上使用的是一个具有本地外观和感觉的按钮。这样,从理论上来说,我们所编写的图形界面程序能运行在任何平台上,做到了图形界面程序的跨平台运行

  n 容器里组件的位置和大小是由布局管理器来决定的。容器对布局管理器的特定实例保持一个引用。当容器需要定位一个组件时,它将调用布局管理器来完成。当决定一个组件的大小时,也是如此。

  n 在AWT中,给我们提供了五种布局管理器:BorderLayout

  FlowLayout

  GridLayout

  CardLayout

  GridBagLayout

  n 我们可以通过设置空布局管理器,来控制组件的大小和位置。调用setLayout(null)。

  n 在设置空布局管理器后,必须对所有的组件调用setLocation(),setSize()或

  setBounds(),将它们定位在容器中。

  n Events(事件):描述发生了什么的对象。

  n Event source(事件源):事件的产生器。

  n Event handlers(事件处理器):接收事件对象、解释事件对象并处理用户交互的方法。

  n JDK1.0的事件模型:层次模型

  n JDK1.1的事件模型:委托模型

  事件监听器:实现了监听器接口的类。一个监听器对象是一个实现了专门的监听器接口的类的实例。

  import java.awt.*;

  import java.awt.event.*;

  public class MyFrame

  {

  public static void main(String[] args)

  {

  Frame f = new Frame("weijie");

  f.show();

  f.setSize(600, 600); //设置窗口大小

  f.setLocation(100, 100); //设置窗口位置

  f.setBackground(Color.blue); //设置背景

  Button btn1 = new Button("1"); //产生按钮组件

  Button btn2 = new Button("2");

  Button btn3 = new Button("3");

  Button btn4 = new Button("4");

  Button btn5 = new Button("5");

  // f.setLayout(new BorderLayout(10,10)); //设置组件的间隙

  // f.setLayout(new FlowLayout(FlowLayout.LEFT)); //组件一次排列,FlowLayout.LEFT表示靠左排列

  // f.setLayout(new GridLayout(3,2,10,2)); //将窗口分为3行2列,并且制定的水平和垂直的间隙

  f.setLayout(new CardLayout()); //卡片式的按钮,层叠样式,可以实现翻牌的效果

  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 HisWindowListener()); //注册事件监听器

  }

  }

  class MyWindowListener implements WindowListener

  {

  public void windowOpened(WindowEvent w)

  {

  }

  public void windowClosing(WindowEvent w) //响应关闭窗口事件

  {

  System.exit(0); //关闭窗口

  }

  public void windowClosed(WindowEvent w) //响应窗口关闭之后的事件

  {

  }

  public void windowIconified(WindowEvent w)

  {

  }

  public void windowDeiconified(WindowEvent w)

  {

  }

  public void windowActivated(WindowEvent w)

  {

  }

  public void windowDeactivated(WindowEvent w)

  {

  }

  }

  //windowAdapter实现windowListener,是个空实现

  class HisWindowListener extends WindowAdapter

  {

  public void windowClosing(WindowEvent w) //响应关闭窗口事件

  {

  System.exit(0); //关闭窗口

  }

  }

  //在同一个窗口中实现多种布局样式

  public class YourFrame extends Frame

  {

  private Panel borderPanel;

  private Panel flowPanel;

  private Panel gridPanel;

  private Panel cardPanel;

  public YourFrame(String title)

  {

  super(title);

  setSize(600,400);

  setLocation(100,100);

  setBorderLayoutPanel();

  setFlowLayoutPanel();

  setGridLayoutPanel();

  setCardLayoutPanel();

  setLayout(new GridLayout(2,2)); //首先将窗口分为2行2列的,接着实现四种布局样式

  add(borderPanel);

  add(flowPanel);

  add(gridPanel);

  add(cardPanel);

  addWindowListener(new WindowAdapter() {

  public void windowClosing(WindowEvent e) {

  System.exit(0);

  }

  });

  }

  public void setBorderLayoutPanel()

  {

  borderPanel=new Panel();

  borderPanel.setLayout(new BorderLayout());

  Button btn1=new Button("North");

  Button btn2=new Button("South");

  Button btn3=new Button("West");

  Button btn4=new Button("East");

  Button btn5=new Button("Center");

  borderPanel.add(btn1,BorderLayout.NORTH);

  borderPanel.add(btn2,BorderLayout.SOUTH);

  borderPanel.add(btn3,BorderLayout.WEST);

  borderPanel.add(btn4,BorderLayout.EAST);

  borderPanel.add(btn5,BorderLayout.CENTER);

  }

  public void setFlowLayoutPanel()

  {

  flowPanel=new Panel();

  Button btn1=new Button("mybole");

  //注册按键监听器

  btn1.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent e) {

  ((Button)e.getSource()).setLabel("weixin");

  }

  });

  Button btn2=new Button("winsun");

  flowPanel.add(btn1);

  flowPanel.add(btn2);

  }

  public void setGridLayoutPanel()

  {

  gridPanel=new Panel();

  gridPanel.setLayout(new GridLayout(2,2));

  Button btn1=new Button("Button1");

  Button btn2=new Button("Button2");

  Button btn3=new Button("Button3");

  Button btn4=new Button("Button4");

  gridPanel.add(btn1);

  gridPanel.add(btn2);

  gridPanel.add(btn3);

  gridPanel.add(btn4);

  }

  public void setCardLayoutPanel()

  {

  final CardLayout cl=new CardLayout();

  cardPanel=new Panel();

  cardPanel.setLayout(cl);

  Button btn1=new Button("黑桃A");

  Button btn2=new Button("红桃K");

  //注册按键监听器

  ActionListener al=new ActionListener()

  {

  public void actionPerformed(ActionEvent e)

  {

  cl.next(cardPanel); //下一个按钮

  }

  };

  btn1.addActionListener(al);

  btn2.addActionListener(al);

  cardPanel.add(btn1,"1");

  cardPanel.add(btn2,"2");

  }

  public static void main(String[] args) throws HeadlessException

  {

  YourFrame yf = new YourFrame("http://www.fkit.org");

  yf.show();

  }

  }