java GUI框架类型

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  6:古老的事件处理

  applet中 的消息处理函数基本都是继承自 Class Component,

  public boolean action(Event evt,Object what);

  handleEvent();

  例子如下,因为他们不是不是面向对象的,也没有switch-case语句,所以就必须调用复杂的if-else语句,并且还得返回父类的程序,例子如下:

  public boolean action (Event evt, Object arg) {

  if(arg.equals(“Button 1”))

  getAppletContext().showStatus(“Button 1”);

  else if(arg.equals(“Button 2”))

  getAppletContext().showStatus(“Button 2”);

  // Let the base class handle it:

  else

  return super.action(evt, arg);

  return true; // We’ve handled it here

  }

  handleEvent 是单独处理一个对象的一个时间,当一些action不方便处理的事情就可以通过handleEvent来处理,因为它是原子性质的。下面的两段代码将是等价的:

  public boolean action (Event evt, Object arg) {

  if(evt.target.equals(lst)) {

  t.setText(“”);

  String[] items = lst.getSelectedItems();

  for(int i = 0; i < items.length; i++)

  t.appendText(items[i] + “\n”);

  }

  else if(evt.target.equals(b)) {

  if(count < flavors.length)

  lst.addItem(flavors[count++], 0);

  }

  else

  return super.action(evt, arg);

  return true;

  }

  }

  *************************************************************************

  public boolean handleEvent(Event evt) {

  if(evt.id == Event.LIST_SELECT || evt.id == Event.LIST_DESELECT) {

  if(evt.target.equals(lst)) {

  t.setText(“”);

  String[] items = lst.getSelectedItems();

  for(int i = 0; i < items.length; i++)

  t.appendText(items[i] +”\n”);

  }

  else

  return super.handleEvent(evt);

  }

  else

  // must return super.handleEvent(evt);

  return super.handleEvent(evt);

  return true;

  }

  public boolean action(Event evt, Object arg) {

  if(evt.target.equals(b)) {

  if(count < flavors.length)

  lst.addItem(flavors[count++], 0);

  }

  else

  return super.action(evt, arg);

  return true;

  }

  并且必须强调的是handle中的最后一个必须返回super.handle(evt);因为必须把handle中不想处理的事情交给父类,要不然例子中的action将不会被执行。

  7:布局

  java中的布局有多个,我们可以采取各种各样的布局,是界面呈现自己想要的姿态

  (1)FlowLayout:

  按照顺序依次排放各个组件

  (2)BorderLayout

  将整个布局分为上下左右中五个部位

  (3)GridLayout

  将整个布局分为m×n块均匀大小

  (4)CardLayout

  一个平面上所有的组件重合,但是某一个时刻只有一个是被及激活的。通过下面这样的方式来改变激活重合的组件。

  if (evt.target.equals(first)) {

  cl.first(cards);

  }

  else if (evt.target.equals(second)) {

  cl.first(cards);

  cl.next(cards);

  }

  else if (evt.target.equals(third)) {

  cl.last(cards);

  }

  8:程序片applet的限制

  applet出于安全机制考虑,它不能访问本地磁盘,不能拥有菜单,对话框不被信任;

  9:新的事件委托事件函数

  新的事件处理机制采用事件源和监听器的模式,程序如下所示:

  class B1 implements ActionListener {

  public void actionPerformed(ActionEvent e) {

  t.setText(“Button 1”);

  }

  }

  通过设置内部类来实现UI和事件处理相互分离的作用

  10:applet 和 窗口程序的结合

  通过在类中添加一个main函数就可以将程序变成一个既能在HTML中运行的程序片,又能在桌面中运行的程序片。

  public static void main(String[] args) {

  TextNew applet = new TextNew();

  Frame aFrame = new Frame(“TextNew”);

  aFrame.addWindowListener(

  new Win dowAdapter() {

  public void windowClosing(WindowEvent e)

  {

  System.exit(0);

  }

  });

  aFrame.add(applet, BorderLayout.CENTER);

  aFrame.setSize(300,200);

  applet.init();

  applet.start();

  aFrame.setVisible(true);

  }

[1][2]

发光并非太阳的专利,你也可以发光

java GUI框架类型

相关文章:

你感兴趣的文章:

标签云: