Entradas Destacadas

Consejos Para Programar Aplicaciones Gráficas Con... Uno de los mayores dolores de cabeza para los que programamos en Java es el desarrollo de aplicaciones con interfaces gráficas hechas en Swing, de hecho la mayoría de nosotros...

¡Quiero saber más!

JLabel Multilínea en Java Normalmente utilizamos las etiquetas en Java con una sola línea de texto, sin embargo a veces es útil ocupar las etiquetas Java con varías líneas de texto en su interior,...

¡Quiero saber más!

Popularidad De Los Lenguajes De Programación Septiembre... Si vas a empezar a programar, seguramente necesites ayuda para elegir un lenguaje de programación, es por ello que publico la siguiente tabla que muestra la popularidad de...

¡Quiero saber más!

¿Que Lenguaje De Programación Elegir? Cuando queremos empezar en serio a programar la primera pregunta que se nos viene a la mente es, ¿que lenguaje es el mejor?, lo malo es que no hay una respuesta absoluta...

¡Quiero saber más!

Una Introducción a Groovy Muchos se quejan de que Java es complicado, y apoyan lenguajes de programación del tipo Ruby, Python o PHP por ser lenguajes tipo scripting, y necesitando con ellos menos...

¡Quiero saber más!

Programundo | ¿Listos? Juguemos a ser Dios Rss

Consejos Para Programar Aplicaciones Gráficas Con Java En Swing

Escrito el : 22-11-2009 | Escrito por: robertbriones | En : Java, Tips

1

Uno de los mayores dolores de cabeza para los que programamos en Java es el desarrollo de aplicaciones con interfaces gráficas hechas en Swing, de hecho la mayoría de nosotros utilizamos algún IDE como NetBeans para facilitarnos esta tarea, no obstante me he encontrado con una serie de consejos para usar Swing, los cuales me han servido bastante y es recomendable tomarlos en cuenta:

  • En la aplicación sólo debe haber un único JFrame, correspondiente a la aplicación principal. Todas las ventanas secundarias deben ser JDialog. Todas las ventanas secundarias deben tener una ventana padre, que es a partir de la cual se despliega. Es decir, todos los JDialog secundarios deben tener como padre al JFrame principal. Si desde un JDialog se va a visualizar otro, este segundo debe tener como padre al primero, y así sucesivamente.
  • Evita en lo posible los JDialog modales, o ten muy en cuenta su jerarquía de padres. El primer JDialog modal no tiene problemas si le pones su padre adecuadamente. Si tienes un JDialog modal visible, no muestres otro JDialog secundario, salvo que también sea modal y sea hijo del anterior. Si pones visibles a la vez dos JDialog modales y no son el uno hijo del otro, tendrásproblemas al intentar escribir en ellos o cerrarlos.
  • Nunca heredes de JFrame o JDialog o JApplet para hacer tus ventanas. Hazlo siempre de un componente que no sea ventana y que no te limite. Si tus ventanas heredan de JPanel, podrás ponerlas siempre que quieras dentro de un JFrame, un JDialog, un JInternalFrame, un JApplet o incluso incrustarlas en otro JPanel. Si tu ventana hereda de JFrame, está condenada a ser un JFrame toda su vida.
  • Reaprovecha las ventanas, no se las dejes al recolector de basura. Si un botón, al apretarlo, visualiza un JDialog, no hagas un new de JDialog cada vez que pulsas el botón. Es mejorhacer sólo un new la primera vez y guardarselo. En las siguientes veces bastará con hacer setVisible(true) y setVisible(false). Para que el recolector de basura libere una ventana, además de lo habitual, hay como minimo que llamar al método dispose() de dicha ventana -cosa que mucha gente no sabe- , para que el sistema de eventos de teclado y ratón eliminentodas las referencias que tienen a ella. De todas formas, incluso así no tengo muy claro que los JDialog se liberen siempre y, desde luego, en versiones anteriores de Java, los JFrame NUNCA se liberaban. La excusa de SUN es que como sólo debía haber un JFrame principal, no tenía sentido liberarlo.
  • Los layouts para situar componentes no son tan complicados, sólo hay que ponerse a ello. No uses el layout null, ya que tu ventana no será redimensionable y puedes tenerproblemas si cambia la fuente de letra, si tu programa se ejecuta en otro sistema operativo, se cambia el look & feel, etc. Una vez que sepas los layouts simples, tenderás a hacer ventanas grandes a base de anidar muchos JPanel que a su vez tienen dentro JPanel que su vez tienen dentro JPanel, todos ellos con un layout simple. Eso hace ventanas muy pesadas y que consumen mucho. Aprende a usar el GridBagLayout para hacer un solo panel con todo. La excepción a esto es que tengas pequeños JPanel reutilizables, como un editor de coordenadas geográficas que pida latitud, norte/sur, longitud, este/oeste, un panel que pida usuario y password, etc.
  • Todos los eventos de ratón y teclado se ejecutan en el mismo hilo que repinta las ventanas. Si en un actionPerformed(), keyPressed(), … tu código tarda mucho o pretendes que se pinte algo en una ventana, simplemente no lo hará hasta que tu código termine. Si tu código en un actionPerformed() va a tardar mucho o tiene que pintar cosas en la ventana, lanza un hilo aparte parahacer esa tarea y termina el actionPerformed() lo antes posible.

Fuente: CasiDiablo

Comments (1)

Muy interesante, aunque me gustaria comentar sobre el tema no puedo ya que aun no tengo conocimiento en lenguaje java, pero mi opinion es que este lenguaje es muy interesante, tiene muchas cosas por hacer.

Gracias por el aporte, Saludos.

Escribe un comentario

Connect with Facebook

Clic para insertar emoticonos (con moderación)

SmileBig SmileGrinLaughFrownBig FrownCryNeutralWinkKissRazzChicCoolAngryReally AngryConfusedQuestionThinkingPainShockYesNoLOLSillyBeautyLashesCuteShyBlushKissedIn LoveDroolGiggleSnickerHeh!SmirkWiltWeepIDKStruggleSide FrownDazedHypnotizedSweatEek!Roll EyesSarcasmDisdainSmugMoney MouthFoot in MouthShut MouthQuietShameBeat UpMeanEvil GrinGrit TeethShoutPissed OffReally PissedMad RazzDrunken RazzSickYawnSleepyDanceClapJumpHandshakeHigh FiveHug LeftHug RightKiss BlowKissingByeGo AwayCall MeOn the PhoneSecretMeetingWavingStopTime OutTalk to the HandLoserLyingDOH!Fingers CrossedWaitingSuspenseTremblePrayWorshipStarvingEatVictoryCurseAlienAngelClownCowboyCyclopsDevilDoctorFemale FighterMale FighterMohawkMusicNerdPartyPirateSkywalkerSnowmanSoldierVampireZombie KillerGhostSkeletonBunnyCatCat 2ChickChickenChicken 2CowCow 2DogDog 2DuckGoatHippoKoalaLionMonkeyMonkey 2MousePandaPigPig 2SheepSheep 2ReindeerSnailTigerTurtleBeerDrinkLiquorCoffeeCakePizzaWatermelonBowlPlateCanFemaleMaleHeartBroken HeartRoseDead RosePeaceYin YangUS FlagMoonStarSunCloudyRainThunderUmbrellaRainbowMusic NoteAirplaneCarIslandAnnouncebrbMailCellPhoneCameraFilmTVClockLampSearchCoinsComputerConsolePresentSoccerCloverPumpkinBombHammerKnifeHandcuffsPillPoopCigarette

Advertise Here