| <!doctype HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> |
| |
| <head> |
| <meta http-equiv="Content-Language" content="en-us"> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
| </head> |
| |
| |
| <table> |
| <tr> |
| <td bgcolor="#000080" colspan="2"><b><font color="#FFFFFF">Example 3 |
| - Clicking and Scrolling</font></b></td> |
| </tr> |
| <tr> |
| <td valign="top"> |
| <p> </p> |
| <p>In this example, a Button is used to create CheckBoxes inside a ScrollPane.</p> |
| <p>The button and scrollpane are placed absolutely inside the contents |
| figure by simply setting their bounds; no layout manager is used there. |
| However, the |
| <u onmouseout="view.style.border ="";view.style.background="#FFFFFF"" onmouseover="view.style.border ="1px solid #000080";view.style.background="#BBBBFF""> |
| view</u> must have a Layout, or its preferred size will not get calculated, |
| and scrolling will not work correctly.</p> |
| <p>The button's action listener will get called each time the user clicks |
| on the button. The |
| <u onmouseout="listener.style.border ="";listener.style.background="#FFFFFF"" onmouseover="listener.style.border ="1px solid #000080";listener.style.background="#BBBBFF""> |
| listener</u> will create a new CheckBox and add it to the view. A vertical scrollbar will appear when the checkboxes cannot all be displayed at once in the pane.</p> |
| </td> |
| <td><img border="0" src="demo3.gif" width="263" height="330"></td> |
| </tr> |
| </table> |
| <table> |
| <tr> |
| <td valign="top"> |
| <pre>01 |
| 02 |
| 03 |
| 04 |
| 05 |
| 06 |
| 07 |
| 08 |
| 09 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
| 44 |
| 45 |
| 46 |
| 47 |
| </pre></td> |
| <td valign="top"> |
| <pre><font color="#000084">import</font> org.eclipse.swt.widgets.Shell; |
| <font color="#000084">import</font> org.eclipse.swt.widgets.Display; |
| <font color="#000084">import</font> org.eclipse.draw2d.*; |
| <font color="#000084">import</font> org.eclipse.swt.SWT; |
| <font color="#000084">import</font> org.eclipse.draw2d.geometry.*; |
| |
| <font color="#000084">public</font> <font color="#000084">class</font> Demo3 { |
| |
| <font color="#000084">static int</font> count = 1; |
| |
| <font color="#000084">public static void</font> main(String args[]){ |
| Shell shell = <font color="#000084">new</font> Shell(); |
| shell.setSize(350,350); |
| shell.open(); |
| shell.setText(<font color="#008484">"Demo 3"</font>); |
| LightweightSystem lws = <font color="#000084">new</font> LightweightSystem(shell); |
| IFigure panel = <font color="#000084">new</font> Figure(); |
| lws.setContents(panel); |
| ScrollPane scrollpane = <font color="#000084">new</font> ScrollPane(); |
| scrollpane.setBounds(<font color="#000084">new</font> Rectangle(30,30,210,200)); |
| scrollpane.getViewport().setBorder(<font color="#000084">new</font> GroupBoxBorder(<font color="#008484">"Viewport"</font>)); |
| scrollpane.setBorder(<font color="#000084">new</font> GroupBoxBorder(<font color="#008484">"ScrollPane"</font>)); |
| <div id="view"> <font color="#000084">final</font> Figure view = <font color="#000084">new</font> Figure(); |
| view.setBorder(<font color="#000084">new</font> GroupBoxBorder(<font color="#008484">"The View"</font>)); |
| view.setLayoutManager(<font color="#000084">new</font> FlowLayout(FlowLayout.VERTICAL)); |
| scrollpane.setView(view);</div> |
| Clickable button = <font color="#000084">new</font> Button(<font color="#008484">"Create checkbox"</font>); |
| button.setBounds(<font color="#000084">new</font> Rectangle(30,250,140,35)); |
| <div id="listener"> button.addActionListener(<font color="#000084">new</font> ActionListener(){ |
| <font color="#000084">public void</font> actionPerformed(ActionEvent e){ |
| view.add(<font color="#000084">new</font> CheckBox(<font color="#008484">"Checkbox "</font>+count++)); |
| } |
| });</div> |
| panel.add(button); |
| panel.add(scrollpane); |
| |
| Display display = Display.getDefault(); |
| <font color="#000084">while</font> (!shell.isDisposed()) { |
| <font color="#000084">if</font> (!display.readAndDispatch()) |
| display.sleep (); |
| } |
| } |
| }</pre></td></tr></table> |