一個可摺疊的SWT寫的面板,點擊面板能夠顯示出隱藏的控件,其中摺疊區域的DataTime是日期時間控件,如果想正常顯示這個控件的效果,一定要把eclipse換成最新的eclipse3.3,我在官網上看到的最新版是eclipse3.3M6;
SWT-Designer要用SWT-Designer6.0,只有這個版本的SWT-Designer才支持eclipse3.3裏面的時間控件。
我在eclipse SWT/Jface核心應用這本書裏面看到,作者利用在rcp中利用eclipse表單實現了一個可摺疊的面板,書中也提到了SWT可以用eclipse表單,但是沒有具體的實現代碼,我利用書中內容實現了一個在SWT中應用eclipse表單。
下面是代碼:
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.layout.grouplayout.GroupLayout;
import org.eclipse.swt.layout.grouplayout.LayoutStyle;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.events.ExpansionAdapter;
import org.eclipse.ui.forms.events.ExpansionEvent;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
public class NeTest ...{
/** *//**
* Launch the application
* @param args
*/
public static void main(String[] args) ...{
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(500, 375);
shell.setText("SWT Application");
shell.setLayout(new FillLayout());
//創建表單對象
FormToolkit ft = new FormToolkit(shell.getDisplay());
//通過表單工具對象創建可滾動的表單對象
final ScrolledForm form = ft.createScrolledForm(shell);
//表單文本
form.setText("swt表單example");
//設置表單佈局
form.getBody().setLayout(new TableWrapLayout());
//創建可摺疊的面板
ExpandableComposite ec = ft.createExpandableComposite(form.getBody(),
ExpandableComposite.TWISTIE);
ec.setText("可摺疊面板ExpandableComposite");
//定義字符串
String txt = "測試";
//創建一個標籤並顯示字符串
Label lb = ft.createLabel(ec, txt,SWT.WRAP);
//將Label作爲摺疊面板的摺疊區域
ec.setClient(lb);
//爲摺疊面板添加展開 摺疊的監聽器
ec.addExpansionListener(new ExpansionAdapter()...{
public void expansionStateChanged(ExpansionEvent e )...{
//根據部件的新尺寸重新定位和更新滾動條
form.reflow(true);
}
});
//創建內容區域 樣式TWISTIE 顯示背景標題TITLE_BAR
Section st = ft.createSection(form.getBody(), Section.TWISTIE|Section.TITLE_BAR);
st.setText("內容區域Section");
//創建一個面板 作爲內容摺疊區域放置的控件
Composite cs = ft.createComposite(st);
cs.setLayout(new GridLayout());
Button btt1;
Button btt2;
Text text;
btt1 = ft.createButton(cs,"系統資料",SWT.TOGGLE | SWT.FLAT | SWT.BORDER);
btt2 = ft.createButton(cs,"個人資料", SWT.TOGGLE);
text = ft.createText(cs, txt, SWT.NONE);
text.setText("填寫數據");
st.setClient(cs);
//爲摺疊面板添加展開 摺疊的監聽器
st.addExpansionListener(new ExpansionAdapter()...{
public void expansionStateChanged(ExpansionEvent e )...{
//根據部件的新尺寸重新定位和更新滾動條
form.reflow(true);
}
});
DateTime dt1 = new DateTime(cs,SWT.CALENDAR);
DateTime time = new DateTime(cs,SWT.TIME);
DateTime data = new DateTime(cs,SWT.DATE);
shell.open();
shell.layout();
while (!shell.isDisposed()) ...{
if (!display.readAndDispatch())
display.sleep();
}
ft.dispose();
display.dispose();
}
}
CALENDAR,TIME,DATE是DateTime 顯示的三種形式,具體的效果大家自己運行代碼看看吧,我的圖帖不上來
DateTime 的用法如下很簡單的就一行代碼就能出來:
DateTime dt1 = new DateTime(cs,SWT.?);其中“?” 代表調用CALENDAR,TIME,DATE中的任何一個。
我的開發環境 eclipse3.3M6+SWT-Designer6.0
誰能告訴我怎麼貼圖啊,我的圖總是貼不上來