使用xmlgui搭建界面

呵呵,第一次用xml搭建界面,不算很成功,但是总算能看见界面了,想想过程还是颇为的值得呀,还是先说说其中遇见的困难吧。

困难1:

xmlgui在它的各个类里使用了log4j来记录,所以在最后编码的时候一定要由appender,不然的话会报错的,当然必须要正确导入log4j的包了。

困难2:

xmlgui使用了开源的HIGLayout这个包,对于这个问题我苦恼了很久,不明白它的xml文件里的pos都是些什么意思,如果有兴趣的朋友可以参考:http://www.autel.cz/dmi/tutorial.html 这是HIGLayout的指南,http://madbean.com/anim/totallygridbag 这是个HIGLayout的动画,做得很有意思的。

举例说明:

简单的说HIGLayout把一个panel分成横纵然后是横长,纵宽,标签horiz代表纵长,例子中把panel的纵分为3部分0,30,0,在这里说明一下,0并不是说这里没有长度,相反它代表默认的长度,vert标签里的0也是同样的意思。

最主要的就是后面的标签了,hweights和vweight,这里面对应的数字与horiz,vert对应,随着resize的进行,表明在对应的长度或者宽度上,是否进行相对比例的放缩,而这个正是HIGLayout的优点,只要你能画出你的界面,那么你就能用HIGLayout来规划。

代码:

MainFrame.xml



   
     
  4
     
   430
   220
  

       
           
               
               
           

           
               
               
           

           
               
               
           

       

       
   

--------------------------------------------------------------------------------
   
  11
  
     
         
     

     
   strut
   v
   10
  

 


MainFrame.java

package org.wly.gui;

import java.util.Locale;
import org.beryl.gui.Controller;
import org.beryl.gui.GUIEvent;
import org.beryl.gui.GUIException;
import org.beryl.gui.GUIUtils;
import org.beryl.gui.ImageIconFactory;
import org.beryl.gui.InternationalizationManager;
import org.beryl.gui.MessageDialog;
import org.beryl.gui.model.ListDataModel;
import org.beryl.gui.model.MapChangeEvent;
import org.beryl.gui.model.MapDataModel;
import org.beryl.gui.model.ModelChangeEvent;
import org.beryl.gui.model.ModelChangeListener;
import org.beryl.gui.model.TableChangeEvent;
import org.beryl.gui.model.TableDataModel;
import org.beryl.gui.model.TableRow;
import org.beryl.gui.swing.CommandEvent;
import org.beryl.gui.swing.ConsoleAttribute;
import org.beryl.gui.widgets.ComboBox;
import org.beryl.gui.widgets.Frame;
import org.beryl.gui.widgets.List;
import org.beryl.gui.widgets.Table;

/**
 * Beryl XML GUI test program
 */
public class MainFrame extends Controller {
 private MapDataModel model = null;
 private Table table = null;
 private TableDataModel tableModel = null;
 private Frame frame = null;

 public MainFrame() throws GUIException {
  /* Create the window */
  model =new MapDataModel();
  frame = constructFrame("WLYFrame",model);
  frame.show();
 }

 public void eventOccured(GUIEvent e) {
  String name = e.getName();
  log.debug("Caught event : " + e.toString());
 }

 public static void main(String args[]) {
  try {
   Locale locale = Locale.US;
   
   if (Locale.getDefault().getLanguage().equals("de"))
    locale = new Locale("de", "DE");
   GUIUtils.defaultInitialization(locale);
   new MainFrame();
  } catch (Exception e) {
   new MessageDialog(e);
  }
 }
}

截图:

使用xmlgui搭建界面_第1张图片

呵呵,是个失败品,不过调一下就行,就到这里,休息~~~~~

你可能感兴趣的:(j2se)