{"id":126,"date":"2016-01-06T10:30:06","date_gmt":"2016-01-06T10:30:06","guid":{"rendered":"http:\/\/10.0.0.10:8888\/wp\/?page_id=126"},"modified":"2017-12-02T08:52:01","modified_gmt":"2017-12-02T08:52:01","slug":"widgets-descripcion","status":"publish","type":"page","link":"https:\/\/www.froses.com\/index.php\/es\/widgets-descripcion\/","title":{"rendered":"Widgets &#8211; Descripci\u00f3n"},"content":{"rendered":"<p>Si bien Swing nos proporciona un conjunto importante de componentes, en el momento de desarrollar interfaces de usuario, me he encontrado con algunas deficiencias y algunas incomodidades. Durante los proyectos que he desarrollado con interfaces de usuario Swing he tenido que ir cubriendo estas deficiencias y he tenido que hacerme la vida m\u00e1s f\u00e1cil para poder entregar los proyectos en los plazos comprometidos. El resultado ha sido un conjunto de widgets que, al menos a m\u00ed, me facilitan la vida.<\/p>\n<p>Muchos de estos widgets han estado inspirados en trabajos o art\u00edculos de terceros. Quiero agradecer especialmente las aportaciones que <a href=\"http:\/\/www.javadude.com\/\" target=\"_blank\" rel=\"noopener\">Scott Stanchfield<\/a> ha hecho a mis widgets, especialmente a los que habilitan propiedades <em>bound<\/em>. Su libro<em>Effective VisualAge for Java, version 3<\/em> ha sido una gran fuente de inspiraci\u00f3n.<\/p>\n<p>He procurado que todos los <em>widgets<\/em> del paquete tengan una peque\u00f1a aplicaci\u00f3n que ilustre su comportamiento y su uso.<\/p>\n<p>Pueden\u00a0descargar los <em>widgets<\/em> <a href=\"https:\/\/www.dropbox.com\/s\/84i7zmqn352fra7\/FWidgets.zip?dl=0\" target=\"_blank\" rel=\"noopener\">aqu\u00ed<\/a>.<\/p>\n<p>La siguiente tabla presenta una breve descripci\u00f3n de cada uno de los <em>widgets<\/em> del paquete.<\/p>\n<table border=\"1\" summary=\"Descripci\u00f3 resumida de cadascun dels Widgets.\" width=\"745\">\n<caption align=\"bottom\">Descripci\u00f3n de los Widgets<\/caption>\n<tbody>\n<tr>\n<th scope=\"col\" width=\"235\">Widget<\/th>\n<th scope=\"col\" width=\"620\">Descripci\u00f3<\/th>\n<\/tr>\n<tr>\n<td><strong>BoundJCheckBox<\/strong><\/td>\n<td>Subclase de <code>JCheckBox<\/code> que tiene la propiedad <code>selected<\/code> bound.<\/td>\n<\/tr>\n<tr>\n<td><strong>BoundJComboBox<\/strong><\/td>\n<td>Subclase de <code>JComboBox<\/code> que tiene las propiedades <code>selectedItem<\/code> y<code>selectedIndex<\/code> bound.<\/td>\n<\/tr>\n<tr>\n<td><strong>BoundJRadioButton<\/strong><\/td>\n<td>Subclase de <code>JRadioButton<\/code> que tiene la propiedad <code>selected<\/code> bound.<\/td>\n<\/tr>\n<tr>\n<td><strong>BoundJTextField<\/strong><\/td>\n<td>Subclase de <code>JTextField<\/code> que tiene la propiedad <code>text<\/code> bound.<\/td>\n<\/tr>\n<tr>\n<td><strong>BoundJTextArea<\/strong><\/td>\n<td>Subclase de <code>JTextArea<\/code> que tiene la propiedad <code>text<\/code> bound.<\/td>\n<\/tr>\n<tr>\n<td><strong>BoundJTree<\/strong><\/td>\n<td>Subclase de <code>JTree<\/code> al que a\u00f1ade dos propiedades bound: <code>selectedNode<\/code> y<code>selectedObject<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><strong>EnhancedJTextField<\/strong><\/td>\n<td>Subclase de <code>BoundJTextField<\/code> que a\u00f1ade las siguientes utilidades:<\/p>\n<ul>\n<li>Permite determinar el n\u00famero m\u00e1ximo de caracteres que se pueden teclear en este campo<\/li>\n<li>Permite determinar el conjunto de caracteres admisibles en este campo (p.e. especificando&#8221;abc123&#8243;, no dejar\u00e1 escribir &#8216;z&#8217; ni &#8216;4&#8217;, ni &#8216;?&#8217;, etc. )<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><strong>ObjectJTextField<\/strong><\/td>\n<td>Subclase de <code>BoundJTextField<\/code> que representa un objeto. El campo almacena el objeto y lo representa bas\u00e1ndose en lo que devuelva el m\u00e9todo<code>toString()<\/code> del objeto.<\/td>\n<\/tr>\n<tr>\n<td><strong>RecallableJTextField<\/strong><\/td>\n<td>Subclase de <code>EnhancedJTextField<\/code> que permite recuperar, usando las flechas de arriba y abajo, los valores entrados en el campo. Para a\u00f1adir un valor a la lista, s\u00f3lo hay que pulsar <code>intro<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><strong>MaskedTextField<\/strong><\/td>\n<td>Subclase de <code>BoundJTextField<\/code> que proporciona la posibilidad de usar m\u00e1scaras. Funciona con Java 1.2, 1.3 i 1.4<\/td>\n<\/tr>\n<tr>\n<td><strong>MoneyJFormattedTextField<\/strong><\/td>\n<td>Subclase de <code>JFormattedTextField<\/code> que facilita la entrada de n\u00fameros que se representar\u00e1n como moneda.<br \/>\nCuando estamos editando, podemos usar sin problemas el teclado num\u00e9rico utilizando el punto como coma decimal. Al salir del campo, la cifra tecleada se presentar\u00e1 en formato de moneda (p.e. tecleamos &#8220;1234.23&#8221; y se ver\u00e1 &#8220;1.234,23 \u20ac&#8221;)<\/td>\n<\/tr>\n<tr>\n<td><strong>MultiKeySelection<\/strong><\/td>\n<td>Es un <em>widget<\/em> no visual que mejora las capacidades de selecci\u00f3n del <code>JComboBox<\/code>permitiendo la selecci\u00f3n de un \u00edtem tecleando los <em>n<\/em> primeros caracteres (no s\u00f3lo el primero!). El criterio de selecci\u00f3n es &#8220;astuto&#8221; y no tiene en cuenta ni acentos ni may\u00fasculas y min\u00fasculas.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si bien Swing nos proporciona un conjunto importante de componentes, en el momento de desarrollar interfaces de usuario, me he encontrado con algunas deficiencias y algunas incomodidades. Durante los proyectos que he desarrollado con interfaces de usuario Swing he tenido que ir cubriendo estas deficiencias y he tenido que hacerme la vida m\u00e1s f\u00e1cil para [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width.php","meta":{"footnotes":""},"class_list":["post-126","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/comments?post=126"}],"version-history":[{"count":14,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/126\/revisions"}],"predecessor-version":[{"id":383,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/126\/revisions\/383"}],"wp:attachment":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/media?parent=126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}