sábado, septiembre 22, 2007

JTabbedPane Personalizado

Muy bien, éste es un post sobre un tema
bastante específico. Se trata a cerca de
personalizar el componente JTAbbedPane del
API Java, Swing. Usualmente hacemos aplicaciones
que manejan fichas o tabs por lo
que creí adecuado hacer una mini-guia sobre
cómo agregar algunos componentes a las pestañas
de dichas fichas.

En el ejemplo que se incluye con la guía, cada
pestaña muestra un icono así como el botón
cerrar. Además el JTabbedPane esta configurado
para mostrar botones de desplazamiento para cuando
las pestañas agregadas, excedan el tamaño del
componente.

Así es como luce:

JTabbedPaned Personalizado

Descárgalo aquí

Nota: El borde de la ventana es por el LookAndFeel de mi Linux ;)

Implmentado en NetBeans 5.5

Espero les sirva de mucho. Cualquier duda o comentario
estoy a las órdenes ;).

7 comentarios:

Juan Ruyan dijo...

Que chilero se mira cuestion de probar (Y)

Joaquin dijo...

Está muy bueno el ejemplo, pero yo quiero hacer algo similar y el jtabbedpane cuando no contiene ningún tab se muestra diferente al tuyo, el tuyo muestra un recuadro y el mio muestra como el boton superior de un tab pero ocupando todo el lugar definido para jtabbedpane, ¿en que parte del codigo haces esto? la idea en mi caso es que no muestre nada y al agregar un tab se resaizee el formulario una vez que agrego el primer tab ¿se entiende?

idesisnery dijo...

Saludos Joaquin. Lo que sucede en esos casos es que el JtabbedPane tiene asociada una Tab (o ficha), pero ésta no tiene ningún contenido (JTextArea, JPanel, etc) asegúrate de que el JTabbedPane no contenga ninguna ficha, esto lo puedes hacer removiendo todo el contenido del mismo:

tabbedPrincipal.removeAll();

Cualquier duda no dudes en escribirme.

sencilloLanu dijo...

Saludos. Felicitaciones por el Bolg. Sobre este tema del JTabbedPane queria consultarte. Quiero hacer un programa que contenga 4 pestañas, cada pestaña esta dividida en dos con un JPanel norte comun y un JPanel central individual, al hacer clic sobre cada pestaña llama a una clase JP(Opcion) que llama al JPHandlerNorte y al JPCental(opcion) que es propio de esa pestaña. El JPHandler Norte identifica que pestaña es escogida y muestra el metodo de UIPNorte que corresponda. Te pregunto... es esta la via correcta para hacerlo, o segun tu opinion debo crear un UINorte(opcion)?

idesisnery dijo...

Según lo entiendo me hablas solo sobre optimización, lo que quiere decir que ya te funciona de alguna manera. Bien, si es ese el caso, por lo que veo dices que mandas a llamar a una clase JP; si creas una instancia cada vez que el usuario presiona una pestaña, estás gastando memoria de más, y por lo que veo la clase solo la utilizas para saber el contenido a mostrar.

Si me enviaras un SSCCE (Short, Self Contained, Correct (Compilable), Example) sobre lo que estás haciendo, podría ayudarte más.

Saludos.

Joaquin dijo...

Necesitaría que los tabs ocupen todo el espacio, la idea no es agregar tabs sino tener un numero fijo, pero que se acomoden el tamaño del tab (donde estan los titulos) cuando redimensiono.

Setsuna F. Seiei dijo...

como hago para tener 3 pestañas predefinidas en la primera estaran los datos personales de alguien, en el segundo su historial de trabajo y en el tercero los datoa de familiaries como haria eso amigo?