{"id":45,"date":"2012-09-04T00:55:56","date_gmt":"2012-09-04T00:55:56","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/pvpotes\/?p=45"},"modified":"2012-09-04T00:55:56","modified_gmt":"2012-09-04T00:55:56","slug":"swt-standard-widget-toolkit","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/pvpotes\/2012\/09\/04\/swt-standard-widget-toolkit\/","title":{"rendered":"\"SWT Standard Widget Toolkit\""},"content":{"rendered":"<p><strong>\u00bfQu\u00e9 es SWT?<\/strong><br \/>\nSWT es un framework para crear interfaces gr\u00e1ficas en Java (como Swing o Awt) que crea a trav\u00e9s de JNI (Java Native Interface) interfaces gr\u00e1ficas nativas del Sistema Operativo en donde ejecutemos nuestra aplicaci\u00f3n SWT. Esto quiere decir que con el mismo c\u00f3digo visualizaremos en cada Sistema Operativo nuestras ventanas como si hubieran sido creadas para ese SO en espec\u00edfico.<\/p>\n<p>&nbsp;<\/p>\n<p>Es una librer\u00eda que la podemos encontrar SWT.jar seg\u00fan la nuestro sistema operativo la descargamos <a href=\"http:\/\/www.java2s.com\/Code\/Jar\/s\/Downloadswt37M7win32x8664jar.htm\">www.java2s.com\/Code\/Jar\/s\/Downloadswt37M7win32x8664jar.htm<\/a><\/p>\n\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 33%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-45 gallery-columns-3 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java.png'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java2.png'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java2-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl>\n\t\t\t<br style='clear: both' \/>\n\t\t<\/div>\n\n<p>Este es de 64 bits para Windows , ya me hab\u00eda descargado uno pero no sabia que era de 32 bits y no sabia que hab\u00eda diferencia entre ellos . \u00a0Despues de descargarlos tenemos que descomprimirlos y agregar a nuestra librer\u00eda como cualquier otra por su puesto estoy trabajando en netbeans, la cual pens\u00e9 que solo se pod\u00eda trabajar en Ubuntu con estas librer\u00edas porque no hay ejemplos con netbeans.<\/p>\n<p>Luego creo dos clases<\/p>\n<p>import org.eclipse.swt.SWT;<\/p>\n<p>import org.eclipse.swt.layout.RowLayout;<\/p>\n<p>import org.eclipse.swt.widgets.Button;<\/p>\n<p>import org.eclipse.swt.widgets.Display;<\/p>\n<p>import org.eclipse.swt.widgets.Shell;<\/p>\n<p>import org.eclipse.swt.widgets.Text;<\/p>\n<p>&nbsp;<\/p>\n<p>public class MisSWT extends SWTt {<\/p>\n<p>static {<\/p>\n<p>Display.setAppName(\"\");<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>protected void createGUI(Shell shell) {<\/p>\n<p>shell.setLayout(new RowLayout());<\/p>\n<p>new Button(shell, SWT.PUSH).setText(\"Boton Presenta\");<\/p>\n<p>&nbsp;<\/p>\n<p>new Button(shell, SWT.PUSH).setText(\"Boton Muestra\");<\/p>\n<p>new Text(shell, SWT.SINGLE | SWT.BORDER).setMessage(\"Texto...\");<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>protected void destroyGUI() {<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>import java.awt.BorderLayout;<\/p>\n<p>import java.awt.Canvas;<\/p>\n<p>import java.awt.event.KeyAdapter;<\/p>\n<p>import java.awt.event.KeyEvent;<\/p>\n<p>import javax.swing.JApplet;<\/p>\n<p>import org.eclipse.swt.SWT;<\/p>\n<p>import org.eclipse.swt.awt.SWT_AWT;<\/p>\n<p>import org.eclipse.swt.widgets.Control;<\/p>\n<p>import org.eclipse.swt.widgets.Display;<\/p>\n<p>import org.eclipse.swt.widgets.Event;<\/p>\n<p>import org.eclipse.swt.widgets.Listener;<\/p>\n<p>import org.eclipse.swt.widgets.Shell;<\/p>\n<p>&nbsp;<\/p>\n<p>abstract public class SWT extends JApplet {<\/p>\n<p>static {<\/p>\n<p>System.setProperty(\"sun.awt.xembedserver\", \"true\");<\/p>\n<p>}<\/p>\n<p>private Display display;<\/p>\n<p>private Shell shell;<\/p>\n<p>private Canvas canvas;<\/p>\n<p>private Control focusControl;<\/p>\n<p>&nbsp;<\/p>\n<p>protected Display getDisplay() {<\/p>\n<p>return display;<\/p>\n<p>}<\/p>\n<p>abstract protected void createGUI(Shell shell);<\/p>\n<p>abstract protected void destroyGUI();<\/p>\n<p>private void buildSWTBase() {<\/p>\n<p>display = new Display();<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/ activar soporte para TAB y SHIF-TAB<\/p>\n<p>display.addFilter(SWT.FocusIn, new Listener() {<\/p>\n<p>@Override<\/p>\n<p>public void handleEvent(Event event) {<\/p>\n<p>focusControl = (Control)event.widget;<\/p>\n<p>}<\/p>\n<p>});<\/p>\n<p>shell = SWT_AWT.new_Shell(display, canvas);<\/p>\n<p>createGUI(shell);<\/p>\n<p>shell.open();<\/p>\n<p>while (!shell.isDisposed())<\/p>\n<p>if (!display.readAndDispatch())<\/p>\n<p>display.sleep();<\/p>\n<p>destroyGUI();<\/p>\n<p>display.dispose();<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>@Override<\/p>\n<p>public void start() {<\/p>\n<p>canvas = new Canvas();<\/p>\n<p>canvas.setFocusable(true);<\/p>\n<p>this.setLayout(new BorderLayout());<\/p>\n<p>this.add(canvas, BorderLayout.CENTER);<\/p>\n<p>new Thread() {<\/p>\n<p>@Override<\/p>\n<p>public void run() {<\/p>\n<p>buildSWTBase();<\/p>\n<p>};<\/p>\n<p>}.start();<\/p>\n<p>canvas.addKeyListener(new KeyAdapter() {<\/p>\n<p>@Override<\/p>\n<p>public void keyPressed(KeyEvent e) {<\/p>\n<p>final KeyEvent _e = e;<\/p>\n<p>display.syncExec(new Runnable() {<\/p>\n<p>@Override<\/p>\n<p>public void run() {<\/p>\n<p>if (_e.getKeyCode() == KeyEvent.VK_TAB<\/p>\n<p>&amp;&amp; _e.getModifiers() == 0)<\/p>\n<p>focusControl.traverse(SWT.TRAVERSE_TAB_NEXT);<\/p>\n<p>else if (_e.getKeyCode() == KeyEvent.VK_TAB<\/p>\n<p>&amp;&amp; _e.getModifiers() == KeyEvent.SHIFT_MASK)<\/p>\n<p>focusControl.traverse(SWT.TRAVERSE_TAB_PREVIOUS);<\/p>\n<p>else if (_e.getKeyCode() == KeyEvent.VK_ENTER<\/p>\n<p>&amp;&amp; _e.getModifiers() == 0)<\/p>\n<p>if (shell.getDefaultButton() != null &amp;&amp;<\/p>\n<p>shell.getDefaultButton().isVisible())<\/p>\n<p>shell.getDefaultButton().notifyListeners(<\/p>\n<p>SWT.Selection, null);<\/p>\n<p>}<\/p>\n<p>});<\/p>\n<p>}<\/p>\n<p>});<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Y no se ejecutan como cualquier proyecto se ejecuta el primer archivo solito encontr\u00e9 el ejemplo en Ubuntu en esta direcci\u00f3n \u00a0<a href=\"http:\/\/danjared.wordpress.com\/2011\/07\/15\/applet-java-con-swt\/#more-403\">http:\/\/danjared.wordpress.com\/2011\/07\/15\/applet-java-con-swt\/#more-403<\/a><\/p>\n<p>En conclusi\u00f3n me parecio muy interesante ya que no fue tan dif\u00edcil la creaci\u00f3n espero se les haga f\u00e1cil<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-48\" src=\"http:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java-1024x748.png\" alt=\"\" width=\"1024\" height=\"748\" srcset=\"https:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java-1024x748.png 1024w, https:\/\/blog.espol.edu.ec\/pvpotes\/files\/2012\/09\/java-300x219.png 300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es SWT? SWT es un framework para crear interfaces gr\u00e1ficas en Java (como Swing o Awt) que crea a trav\u00e9s de JNI (Java Native Interface) interfaces gr\u00e1ficas nativas del Sistema Operativo en donde ejecutemos nuestra aplicaci\u00f3n SWT. Esto quiere decir que con el mismo c\u00f3digo visualizaremos en cada Sistema Operativo nuestras ventanas como si [&hellip;]<\/p>\n","protected":false},"author":6766,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/posts\/45","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/users\/6766"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"predecessor-version":[{"id":52,"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/posts\/45\/revisions\/52"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/pvpotes\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}