我遇到过的问题,请教csdn 社区、Java学习的朋友 ,现在总结一下情况。初学Java,有误之处,请大家指出。
有一个书本上的Java示范程序,是用Jbuider2006写的,带有GUI的。如下面的图1、图2。
图1 login程序的代码
图2 login程序的GUI设计
如何在Jbuilder2007中打开Jbuilder2006的老项目呢?Jbuilder2007使用了Eclipse内核,在管理项目文件上与Jbuilder2006有很多不同。
1.ant打开
下载了ant1.7,在Jbuilder2006配置好了ant。(什么是ant,请搜索相关文章)
在原本的项目上,点击菜单栏“New->Ant->Export to Ant 然后右键点生成的结点选rebuild.会生成ant脚本.”。在Jbuilder2007中用“从现有的Ant 文件构建java项目”打开。打开成功。如图3.
图3
2.
又或者Jbuilder2007有一个“[新建]->[项目]->[Legacy Jbuilder]->[ Java Project from Existing Jbuilder .jpx Project]->”这样也可以打开旧的Jbuilder项目。效果同上面一样。打开成功。如图3。
Jbuilder2007使用了Eclipse内核,Eclipse开发GUI使用第三方插件,主要的有Visual Editor for Java;WindowBuilder Pro;jigloo。
图4 示范程序运行的情况
图5 在示例程序上,鼠标右键,选择[打开方式]->[可视化编辑器],打开Visual Editor for Java插件编辑器
VE转换示例程序代码的情况不好
图6 用WindowBuilder Pro 6.4.0 for Eclipse3.2插件转换的情况,
似乎效果比VE好很多,但也不是很好
图7 用jigloo 4.04插件转换的情况,效果较好
VE插件在功能上,还不如WindowBuilder Pro 、jigloo 好用。建议使用Eclipse设计GUI时,不要使用VE插件,
而使用WindowBuilder Pro 或者jigloo。
插件WindowBuilder Pro 与jigloo 代码转换比较
下面是一个示例代码,在文本编辑器中,手动写的GUI。没有用任何插件“画出”。
import
java.awt.
*
;
import
java.awt.event.
*
;
public
class
TestChoice
implements
ItemListener, ActionListener
...
{
TextField name;
CheckboxGroup cg;
Choice career;
List city;
Checkbox[] favorite;
public static void main(String args[])
...{
new TestChoice().createUI();
}
public void createUI()
...{
Frame f = new Frame("注册窗口");
Panel p = new Panel();
p.setLayout(new FlowLayout(FlowLayout.LEFT, 1, 1));
name = new TextField(10);
cg = new CheckboxGroup();
Checkbox sex1 = new Checkbox("男", cg, false);
Checkbox sex2 = new Checkbox("女", cg, false);
Panel sp = new Panel();
sp.add(sex1);
sp.add(sex2);
career = new Choice();
career.add("IT技术人员");
career.add("工商管理");
career.add("教育");
career.add("金融");
city = new List(4, false);
city.add("北京");
city.add("上海");
city.add("天津");
city.add("广州");
city.add("太原");
city.add("石家庄");
city.add("哈尔滨");
city.add("三亚");
city.add("威海");
p.add(new Label("姓名:"));
p.add(name);
p.add(new Label("性别:"));
p.add(sp);
p.add(new Label("职业:"));
p.add(career);
p.add(new Label("城市:"));
p.add(city);
p.add(new Label("爱好:"));
String[] sf = ...{ "旅游", "读书", "时装", "汽车", "健美" };
favorite = new Checkbox[sf.length];
for (int i = 0; i < sf.length; i++)
...{
favorite[i] = new Checkbox(sf[i]);
favorite[i].addItemListener(this);
p.add(favorite[i]);
}
f.add(p, "Center");
Panel psouth = new Panel();
psouth.setLayout(new GridLayout(1, 2));
Button submit = new Button("提交");
Button reset = new Button("退出");
submit.addActionListener(this);
reset.addActionListener(new ActionListener()
...{
public void actionPerformed(ActionEvent e)
...{
System.exit(0);
}
});
psouth.add(submit);
psouth.add(reset);
f.add(psouth, "South");
f.addWindowListener(new WindowAdapter()
...{
public void windowClosing(WindowEvent e)
...{
System.exit(0);
}
});
f.setSize(160, 270);
f.setLocation(300, 100);
f.setVisible(true);
}
public void itemStateChanged(ItemEvent e)
...{
String s = e.getItem().toString();
if (e.getStateChange() == ItemEvent.SELECTED)
...{
System.out.println("您刚选中了项目:" + s);
} else
...{
System.out.println("您刚取消了项目:" + s);
}
}
public void actionPerformed(ActionEvent e)
...{
if (e.getActionCommand().equals("提交"))
...{
String info = "您提交的信息如下:姓名:" + name.getText() + " 性别:"
+ cg.getSelectedCheckbox().getLabel() + " 职业:"
+ career.getSelectedItem() + " 城市:"
+ city.getSelectedItem() + " 爱好:";
for (Checkbox f : favorite)
...{
info += f.getState() ? (f.getLabel() + ". ") : "";
}
System.out.println(info);
}
}
}
图8 示范程序运行的效果
图9 用WindowBuilder Pro 6.4.0 for Eclipse3.2插件转换的情况
图10 用jigloo 4.04插件转换的情况
结论:原本这个带GUI的示例程序是用jbuilder2006写的,在jbuilder2007安装 好jigloo,使用jigloo转换代码效果比 较好。
如果不是用jbuilder2006写的(如何后面的那个示范程序),WindowBuilder Pro不一定输给jigloo。