本文目录一览:
java有了Swing,为什么还要使用SWT呢?
由于在不同的操作系统下,提供的控件是不一样的,AWT采用最小公约数的办法,只提供所有操作系统都有的控件。但后来SUN改变了做法,在Swing里除了JFrame,JWinodows,JDialog(记不太清了,好像是这几个)是调用本地操作系统的控件,其它JPanel,JButton之类的都是绘出来的,所以Swing在所有平台看起来都是一样的外观。这样保持了外观一致性,但牺牲了性能。 IBM更喜欢AWT的实现机制,做出了SWT,SWT采用的是最大公倍数的做法。SWT大部分都是用的本地操作系统的控件,一些在windows里有的控件可能在linux下没有,对这种控件才采用自己绘制的方式。SWT采用类似JAVA虚拟机的方式,在不同的平台,有不同的开发包,我们写的java代码是一样的,但不同平台下看起来外观是不一样的,但性能提升很高,据说和C++做的界面速度差不多:) 也许你会问哪种更好,引一名话:this is equivalent to asking whether a harmmer is better than a screw driver,of course ,a hammer wieldded with sufficient force can probably drive a screw into a wall ,and the butt of a screw can be used in a pinch to knock in a nail. However, a good carpenter keeps both harmer and screw drivers in her tool box and will use the tool that is appropriate for the job at hand. 个人感觉以前java做界面完全没有优势,从外观到性能(我很喜欢Swing的look and feel,可以改变风格),SWT的出现改变了性能上的缺点,再加上JFace,及Eclipse的RCP,我还是倾向于用SWT。
在java中用swt弹出提示框
JOptionPane.showMessageDialog(null, “信息消息”,“提示”, JOptionPane.INFORMATION_MESSAGE);
后面JOptionPane.INFORMATION_MESSAGE 可以换成不同的值,代表不同的消息框类型,包括提示、警告、错误!
–希望能帮到你!!
如何把java SWT程序中的匿名内部类改写成命名内部类?
//请看最后一个private class ,其实命名内部类跟普通的java程序一样写,只要知道你自己的监听器要继承于哪个类,实现什么方法
public class Level4Class extends ViewPart {
private TableViewer tv;
public static int num=0;
private ListNavigatorEntry files;
public int getNum() {
return num;
}
public ListNavigatorEntry getFiles() {
return files;
}
public void setFiles(ListNavigatorEntry files) {
this.files = files;
}
public void setNum(int num) {
this.num = num;
}
@Override
public void createPartControl(Composite parent) {
Composite topComp = new Composite(parent, SWT.NONE);
topComp.setLayout(new FillLayout());
createTableViewer(topComp);// 自定义方法:创建一个TableViewer表格
tv.setContentProvider(new SmsContentProvider());// 内容器
tv.setLabelProvider(new TableViewerLabelProvider());// 标签器
tv.addDoubleClickListener(new MyDoubleClickListener());
files = getCourse();
tv.setInput(files);
}
@Override
public void setInitializationData(IConfigurationElement cfig, String propertyName, Object data) {
// TODO 自动生成方法存根
super.setInitializationData(cfig, propertyName, getCourse());
}
// 创建表格
private void createTableViewer(Composite parent) {
tv = new TableViewer(parent, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
Table table = tv.getTable();
table.setHeaderVisible(true); // 显示表头
table.setLinesVisible(true); // 显示表格线
table.setLayout(new TableLayout());// 专用于表格的布局
// 建立TableViewer中的列,createColumn是自定义方法
createColumn(10, “编号”);
createColumn(70, “域名”);
createColumn(30, “截止日期”);
createColumn(30, “版本状态”);
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
// 创建表格的列
private TableColumn createColumn(int weight, String name) {
Table table = tv.getTable();
TableLayout layout = (TableLayout) table.getLayout();
layout.addColumnData(new ColumnWeightData(weight));
TableColumn col = new TableColumn(table, SWT.NONE);
if (name.equals(“编号”)){
col.addSelectionListener(new SelectionAdapter() {
boolean asc = true; // 记录上一次的排序方式,默认为升序
public void widgetSelected(SelectionEvent e) {
Level4Class.num=0;
// asc=true则ID的升序排序器,否则用降序
tv.setSorter(asc ? MySorter.ID_ASC : MySorter.ID_DESC);
asc = !asc;// 得到下一次排序方式
}
});
}else if(name.equals(“截止日期”)){
col.addSelectionListener(new SelectionAdapter() {
boolean asc = true; // 记录上一次的排序方式,默认为升序
public void widgetSelected(SelectionEvent e) {
Level4Class.num=0;
// asc=true则ID的升序排序器,否则用降序
tv.setSorter(asc ? MySorter.TIME_ASC : MySorter.TIME_DESC);
asc = !asc;// 得到下一次排序方式
}
});
}else if(name.equals(“版本状态”)){
col.addSelectionListener(new SelectionAdapter() {
boolean asc = true; // 记录上一次的排序方式,默认为升序
public void widgetSelected(SelectionEvent e) {
Level4Class.num=0;
// asc=true则ID的升序排序器,否则用降序
tv.setSorter(asc ? MySorter.STATE_ASC : MySorter.STATE_DESC);
asc = !asc;// 得到下一次排序方式
}
});
}
col.setText(name);
return col;
}
// 标签器
private static final class TableViewerLabelProvider extends TableLabelProviderAdapter implements ITableColorProvider{
public String getColumnText(Object element, int col) {
// String result = “”;
NavigatorEntry o = (NavigatorEntry) element;
switch (col) {
case 0:
return String.valueOf(++num);
case 1:
return o.getDomain();
case 2:
String time = o.getTime();
if (null != time !time.equals(“”)time.length()=10){
time = time.substring(0, 10);
}else if(null != time !time.equals(“”)time.length()10){
time =time;
}else{
time =””;
}
return time;
case 3:
return o.getLevel().getMeg();
default:
return “”;
}
}
public Color getBackground(Object element, int columnIndex) {
// NavigatorEntry o = (NavigatorEntry) element;
// if (o.getLevel().getMeg().equals(IAppConstants.LEVEL_2)){
// return Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
// }else if(o.getLevel().getMeg().equals(IAppConstants.LEVEL_3)){
// return Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY);
// }else if(o.getLevel().getMeg().equals(IAppConstants.LEVEL_1)){
// return Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
// }else if(o.getLevel().getMeg().equals(IAppConstants.LEVEL_4)){
// return Display.getDefault().getSystemColor(SWT.COLOR_RED);
// }else if (o.getLevel().getMeg().equals(IAppConstants.LEVEL_5)) {
// return Display.getDefault().getSystemColor(SWT.COLOR_YELLOW);
// }
return null;
}
public Color getForeground(Object element, int columnIndex) {
NavigatorEntry o = (NavigatorEntry) element;
if (true){
return Display.getDefault().getSystemColor(SWT.COLOR_RED);
}
return null;
}
}
/**
* 得到所有正常的版本数据
* @return
*/
private List getCourse(){
ListNavigatorEntry list = new ArrayListNavigatorEntry();
Session session = HibernateSessionFactory.getSession(“hibernate_mysql.cfg.xml”);
Query query = session.getNamedQuery(“org.b2c.framework.sys.Version.getNotNormal”);
for (Iterator iter = query.iterate(); iter.hasNext();) {
Version version = (Version)iter.next();
if (null != version){
NavigatorEntry o = new NavigatorEntry();
o.setDomain(version.getDomain());
o.setId(version.getId());
Level l = new Level();
l.setLevel(version.getState());
switch(version.getState()){
case 0:
l.setMeg(“未注册”);
break;
case 4:
l.setMeg(“已过期”);
break;
}
o.setLevel(l);
o.setPublickey(version.getPublickey());
o.setPrivatekey(version.getPrivatekey());
o.setCiphertext(version.getCiphertext());
o.setEnshrined(version.getEnshrined());
if (null != version.getVtime()){
o.setTime(version.getVtime().toString().substring(0,10));
}else{
o.setTime(“—–“);
}
list.add(o);
}
}
HibernateSessionFactory.closeSession();
return list;
}
public TableViewer getTv() {
return tv;
}
public void setTv(TableViewer tv) {
this.tv = tv;
}
private class MyDoubleClickListener implements IDoubleClickListener {
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
NavigatorEntry entry = (NavigatorEntry) sel.getFirstElement();
if(entry!=null){
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IViewPart view1 = window.getActivePage().findView(“org.b2c.framework.ui.teachunitname”);
Text temp1 = ((TeachUnitName)view1).getLable1();
Text temp2 = ((TeachUnitName)view1).getLable2();
temp1.setText(entry.getPrivatekey());
temp2.setText(entry.getCiphertext());
}
}
}
}
java SWT 加载文件内容
楼主,你的代码好多错误。帮你改了部分,主要还是看“ //这里应该怎么写代码”下面的代码。java处理文件需要流的知识。我这里用的Scanner需要jdk1.5以上版本才能用。你先运行看看吧
package com.swtjface;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Test {
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
shell.setSize(500, 375);
final Button button = new Button(shell, SWT.PUSH);
button.setBounds(0, 0, 150, 35);
button.setText(“打开文件”);
final Text text = new Text(shell, SWT.BORDER|SWT.MULTI);
text.setBounds(0, 40, 500, 375);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
// 这里应该怎么写代码
FileDialog dlg = new FileDialog(shell, SWT.OPEN);
dlg.setText(“选择一个TXT文件”);
dlg.setFilterExtensions(new String[] { “*.txt” });
dlg.setFilterNames(new String[] { “文本文件(*.txt)” });
String filePath = dlg.open();
System.out.println(filePath);
try {
Scanner in = new Scanner(new FileInputStream(new File(
filePath)));
while (in.hasNextLine()) {
text.append(in.nextLine() + “\r\n”);
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/187579.html