hengheng123456789

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks
          1、使用Shell的Tool Tips 實(shí)現(xiàn)圖像內(nèi)的Tool Tips
          ?public static void main (String [] args) {
          ??Display display = new Display ();
          ??final Color [] colors = {
          ???display.getSystemColor (SWT.COLOR_RED),
          ???display.getSystemColor (SWT.COLOR_GREEN),
          ???display.getSystemColor (SWT.COLOR_BLUE),
          ??};
          ??final Rectangle [] rects = {
          ???new Rectangle (10, 10, 30, 30),
          ???new Rectangle (20, 45, 25, 35),
          ???new Rectangle (80, 80, 10, 10),
          ??};
          ??final Shell shell = new Shell (display);
          ??Listener mouseListener = new Listener () {
          ???public void handleEvent (Event event) {
          ????switch (event.type) {
          ?????case SWT.MouseEnter:
          ?????case SWT.MouseMove:
          ??????for (int i=0; i<rects.length; i++) {
          ???????if (rects [i].contains (event.x, event.y)) {
          ????????String text = "ToolTip " + i;
          ????????if (!(text.equals (shell.getToolTipText ()))) {
          ?????????shell.setToolTipText ("ToolTip " + i);
          ????????}
          ????????return;
          ???????}
          ??????}
          ??????shell.setToolTipText (null);
          ??????break;
          ?????}
          ???}
          ??};
          ??shell.addListener (SWT.MouseMove, mouseListener);
          ??shell.addListener (SWT.MouseEnter, mouseListener);
          ??shell.addListener (SWT.Paint, new Listener () {
          ???public void handleEvent (Event event) {
          ????GC gc = event.gc;
          ????for (int i=0; i<rects.length; i++) {
          ?????gc.setBackground (colors [i]);
          ?????gc.fillRectangle (rects [i]);
          ?????gc.drawRectangle (rects [i]);
          ????}
          ???}
          ??});
          ??shell.setSize (200, 200);
          ??shell.open ();
          ??while (!shell.isDisposed ()) {
          ???if (!display.readAndDispatch ()) display.sleep ();
          ??}
          ??display.dispose ();
          ?}

          2、使用Shell實(shí)現(xiàn)Tool Tip的功能。
          ?public static void main (String[] args) {
          ??final Display display = new Display ();
          ??final Shell shell = new Shell (display);
          ??shell.setLayout (new FillLayout ());
          ??final Table table = new Table (shell, SWT.BORDER);
          ??for (int i = 0; i < 20; i++) {
          ???TableItem item = new TableItem (table, SWT.NONE);
          ???item.setText ("item " + i);
          ??}
          ??// Disable native tooltip
          ??table.setToolTipText ("");
          ??
          ??// Implement a "fake" tooltip
          ??final Listener labelListener = new Listener () {
          ???public void handleEvent (Event event) {
          ????Label label = (Label)event.widget;
          ????Shell shell = label.getShell ();
          ????switch (event.type) {
          ?????case SWT.MouseDown:
          ??????Event e = new Event ();
          ??????e.item = (TableItem) label.getData ("_TABLEITEM");
          ??????// Assuming table is single select, set the selection as if
          ??????// the mouse down event went through to the table
          ??????table.setSelection (new TableItem [] {(TableItem) e.item});
          ??????table.notifyListeners (SWT.Selection, e);
          ??????shell.dispose ();
          ??????table.setFocus();
          ??????break;
          ?????case SWT.MouseExit:
          ??????shell.dispose ();
          ??????break;
          ????}
          ???}
          ??};
          ??
          ??Listener tableListener = new Listener () {
          ???Shell tip = null;
          ???Label label = null;
          ???public void handleEvent (Event event) {
          ????switch (event.type) {
          ?????case SWT.Dispose:
          ?????case SWT.KeyDown:
          ?????case SWT.MouseMove: {
          ??????if (tip == null) break;
          ??????tip.dispose ();
          ??????tip = null;
          ??????label = null;
          ??????break;
          ?????}
          ?????case SWT.MouseHover: {
          ??????TableItem item = table.getItem (new Point (event.x, event.y));
          ??????if (item != null) {
          ???????if (tip != null? && !tip.isDisposed ()) tip.dispose ();
          ???????//使用Shell實(shí)現(xiàn)Tool Tip的功能
          ???????tip = new Shell (shell, SWT.ON_TOP | SWT.NO_FOCUS | SWT.TOOL);
          ???????tip.setBackground (display.getSystemColor (SWT.COLOR_INFO_BACKGROUND));
          ???????FillLayout layout = new FillLayout ();
          ???????layout.marginWidth = 2;
          ???????tip.setLayout (layout);
          ???????label = new Label (tip, SWT.NONE);
          ???????label.setForeground (display.getSystemColor (SWT.COLOR_INFO_FOREGROUND));
          ???????label.setBackground (display.getSystemColor (SWT.COLOR_INFO_BACKGROUND));
          ???????label.setData ("_TABLEITEM", item);
          ???????label.setText (item.getText ());
          ???????label.addListener (SWT.MouseExit, labelListener);
          ???????label.addListener (SWT.MouseDown, labelListener);
          ???????Point size = tip.computeSize (SWT.DEFAULT, SWT.DEFAULT);
          ???????Rectangle rect = item.getBounds (0);
          ???????Point pt = table.toDisplay (rect.x, rect.y);
          ???????tip.setBounds (pt.x, pt.y, size.x, size.y);
          ???????tip.setVisible (true);
          ??????}
          ?????}
          ????}
          ???}
          ??};
          ??table.addListener (SWT.Dispose, tableListener);
          ??table.addListener (SWT.KeyDown, tableListener);
          ??table.addListener (SWT.MouseMove, tableListener);
          ??table.addListener (SWT.MouseHover, tableListener);
          ??shell.pack ();
          ??shell.open();
          ??while (!shell.isDisposed()) {
          ???if (!display.readAndDispatch())
          ????display.sleep();
          ??}
          ??display.dispose();
          ?}
          posted on 2006-11-07 17:39 哼哼 閱讀(1337) 評(píng)論(0)  編輯  收藏 所屬分類: SWT
          主站蜘蛛池模板: 邢台县| 林周县| 崇信县| 寻乌县| 双辽市| 来宾市| 大城县| 抚顺市| 金阳县| 申扎县| 怀远县| 孙吴县| 布尔津县| 靖安县| 凤阳县| 灌南县| 金门县| 云霄县| 正镶白旗| 根河市| 化德县| 黄平县| 郑州市| 长汀县| 琼结县| 余江县| 科技| 张家界市| 丰都县| 鄂伦春自治旗| 车致| 苍梧县| 广宗县| 潢川县| 惠水县| 贡嘎县| 黄浦区| 龙山县| 广州市| 旺苍县| 长宁县|