javaswt,javaswt菜單點擊

本文目錄一覽:

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/zh-hk/n/187579.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 06:23
下一篇 2024-11-28 06:24

相關推薦

發表回復

登錄後才能評論