⑴ 要用java开发GUI,SWT,Jface,RCP有什么联系什么关系。
jsf是表示层的框架,主要是web界面方面的应用;而其他的都属于桌面UI库,与前者不同,在此不做比较。
AWT是java早期版本使用的UI库,为了跨平台,它指提供各个平台上支持的组件的最大公约数集合..比如苹果操作系统并不支持按钮的图片展示,于是AWT的按钮是无法使用图片的;AWT的实现是以本机对等体的方式来实现的,即一个Button对象则对应于本机一个窗口组件(利用本地程序实现映射),于是AWT组件与本地组件长得是一模一样的。
SWING则是基于AWT的基础上做了许多扩展,它提供的是各种平台上支持的组件的最小公倍数集合..在设计上使用了MVC(分UI、Component、Model),除了窗口之外,其大部分组件都使用Java2D来实现渲染模拟,也因为如此,Swing在渲染方面的灵活性非常大。
SWT是IBM公司针对Java桌面UI开发出来的另一个分支,它的实现方式与AWT类似,都使用了本机对等体的实现,于是它的组件也与本机组件非常雷同;此外它遵循最小公倍数原则,对于非公共组件部分,它又使用了类似Draw2D库的API来模拟渲染。JFace是SWT的增强包,它是对SWT的进一步封装,使得SWT界面开发的模块划分更加清晰,代码也更加维护。
综上,在渲染的灵活性上面,swing是最优的,因为它的渲染可在java程序中实现(MVC),而AWT和SWT则因为本机对等体的缘故不是那么灵活;在内存占用上面,AWT和SWT比swing要少得多,而且也响应也要快一些,这是因为Swing将组件的渲染信息(甚至是像素信息)都放在程序内存中,并由自己管理,所以Swing界面响应很慢是不足为怪的~~;在支持的组件集合上,SWT和Swing比AWT丰富得多;最后,在稳定性上面,SWT稍显不足~~
上面的几种UI库中,Swing和SWT都占据一定的份额吧,Swing在一些报表图形展示方面有更好的灵活性,也有比较好的开源组件支持(如JFreeChart);而SWT在快速应用开发方面是非常合适的,Eclipse界面便是SWT的实现,而也基于此出现了Eclipse RCP技术(类似于MFC),该技术整合了SWT
⑵ java swt 登陆成功后,怎样跳转到主界面
楼主说详细点吧!不明白你的意思!
⑶ java中SWT和swing是什么关系在界面中分别扮演着什么样的角色
据我自己的使用情况来看:
awt使用起来较为繁琐,但速度优于swing
⑷ JAVA SWT界面风格问题
用JAVA开发图形界面是比较困难的,如果没有一定的开发经验,你恐怕很难去驾驭。
⑸ java SWT界面跳转问题
dispose()
Disposes of the operating system resources associated with the receiver and all its descendents.第1个界面调用这个方法
⑹ JAVA用SWT写的界面,怎样把数据库里面的表显示在SWT的table中并且实现修改查询删除功能。
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
public class TabViewTest {
public void open() throws Exception{
Display display=new Display();
Shell shell=new Shell(display);
shell.setLayout(new FillLayout());
shell.setSize(new Point(400,300));
Table table=new Table(shell,SWT.MULTI | SWT.FULL_SELECTION |SWT.BORDER);
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableColumn idColumn =new TableColumn(table,SWT.LEFT);
idColumn.setText("id");
idColumn.setWidth(100);
TableColumn usernameColumn=new TableColumn(table,SWT.LEFT);
usernameColumn.setText("username");
usernameColumn.setWidth(100);
TableColumn passwordColumn=new TableColumn(table,SWT.LEFT);
passwordColumn.setText("password");
passwordColumn.setWidth(100);
Connection conn=getAcessConnection();
String sqlString="select * from user";
Statement statement=conn.createStatement();
ResultSet rSet=statement.executeQuery(sqlString);
while(rSet.next()){
TableItem item=new TableItem(table,SWT.LEFT);
String[] valueStrings={rSet.getInt("id")+"0",rSet.getString("username"),rSet.getString("password")};
item.setText(valueStrings);
}
rSet.close();
statement.close();
conn.close();
shell.open();
while(!shell.isDisposed()){
if( !display.readAndDispatch()){
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args) throws Exception {
new TabViewTest().open();
}
public Connection getAcessConnection(){
Connection conn=null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
URL url1=TabViewTest.class.getClassLoader().getResource("db/test.mdb");
String path=url1.getPath();
path=path.substring(1, path.length());
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path;
conn=DriverManager.getConnection(url);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
数据库用的是access,楼主可以自己随便修改下的。
⑺ java界面刷新SWT
SwingUtilities.updateComponentTreeUI (this);
用这个刷新即可