elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Alinear un JLabel en un Panel
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alinear un JLabel en un Panel  (Leído 5,219 veces)
SDCC

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Alinear un JLabel en un Panel
« en: 14 Noviembre 2018, 05:22 am »

Buenos dias,estoy realizando la parte grafica de un programa y llevo rato atorado por querer acomodar varios JLabel mediante el metodo setAlignmentX.
En sintesis mi programa cuenta con varios paneles que para ser mas precisos son ordenados mediante un esquema BorderLayout, el panel en el que tengo problemas es en el panel del borde derecho.

El panel del borde derecho esta compuesto por principalmente dos paneles(Adjunto imagenes al final), este panel ordena a sus dos paneles hijos mediante un esquema BoxLayout en el eje Y ,mi problema se encuentra en estos dos paneles hijos.Ambos paneles hijos estan construidos de la misma manera mediante un esquema BoxLayout en el eje X, en ambos paneles tengo un JLabel llamado titulo que me representa el titulo del menu respectivamente , en ambos casos los paneles contienen otros paneles hijos que por el momento no he terminado sin embargo mi problema se encuentra en estos JLabel que representan los titulos de los menus los cuales quiero que esten alineados o pegados al borde izquiero de su respectivo Panel sin embargo no lo he conseguido con el metodo setAlignmentX.Tengo mis dudas si es por la manera en que estoy creando las ventanas o que simplemente el BoxLayout no me lo permite.De antemano agradezco sus aportes y adjunto el codigo e imagen de la interfaz grafica.

Clase de Contenedor Padre(Se encuentra en un BorderLayout en el borde derecho).

Código
  1. import java.awt.*;
  2. import javax.swing.*;
  3.  
  4. public class MenuOpcionesFiguras extends JPanel{
  5.    JPanel menuCrearFiguras;
  6.    JPanel menuBorrarFiguras;
  7.    JLabel titulo;
  8.  
  9.    public MenuOpcionesFiguras(){
  10.  
  11.        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
  12.  
  13.        //Creacion de Paneles para menu de creacion de figuras, eliminacion de figuras,etc..
  14.        menuCrearFiguras = new MenuCrearFiguras();
  15.        menuCrearFiguras.setBorder(BorderFactory.createLineBorder(Color.black));
  16.        menuCrearFiguras.setBackground(new Color(255, 153, 51));
  17.  
  18.  
  19.        menuBorrarFiguras = new MenuBorrarFiguras();
  20.        menuBorrarFiguras.setBorder(BorderFactory.createLineBorder(Color.black));
  21.        menuBorrarFiguras.setBackground(new Color(102, 153, 255));
  22.  
  23.        titulo = new JLabel("Herramientas");
  24.        titulo.setFont(new Font("Arial",Font.BOLD+Font.ITALIC,14));
  25.        titulo.setAlignmentX(SwingConstants.CENTER);
  26.  
  27.  
  28.        //Agregado de componentes al Panel
  29.        add(titulo);
  30.       add(menuCrearFiguras);
  31.       add(menuBorrarFiguras);
  32.  
  33.  
  34.  
  35.  
  36.  
  37.    }
  38.  
  39.    @Override
  40.    public Dimension getPreferredSize(){
  41.        Dimension dimensionPadre = getParent().getSize();
  42.        return new Dimension((int)(dimensionPadre.getWidth()/5),(int)(dimensionPadre.getHeight()));
  43.  
  44.    }
  45.  
  46. }
  47.  
  48.  
  49.  

Clase un panel hijo (Se encuentra contenido en el JPanel de arriba)

Código
  1. import javax.swing.*;
  2. import javax.swing.SwingConstants;
  3.  
  4.  
  5.  
  6. import java.awt.event.*;
  7. import java.awt.*;
  8.  
  9. public class MenuCrearFiguras extends JPanel{
  10.  
  11.  
  12.    JPanel subMenuCrearFigura;
  13.    JLabel titulo;
  14.    JPanel botones;
  15.  
  16.  
  17.  
  18.    public MenuCrearFiguras(){
  19.  
  20.        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
  21.  
  22.        //Declaracion de componentes
  23.        titulo =new JLabel("Crear Figuras");
  24.        titulo.setFont(new Font("Agency FB", Font.BOLD, 14));
  25.        titulo.setAlignmentX(LEFT_ALIGNMENT);
  26.  
  27.  
  28.  
  29.        botones = new BotonesCrearFiguras();
  30.       // botones.setAlignmentX(JPanel.LEFT_ALIGNMENT);
  31.  
  32.        add(titulo);
  33.        add(botones);
  34.  
  35.        //Agregar eventos a los componentes
  36.  
  37.  
  38.  
  39.  
  40.    }
  41.    @Override
  42.    public Dimension getPreferredSize(){
  43.        Dimension dimensionPadre = getParent().getSize();
  44.        return new Dimension((int)(dimensionPadre.getWidth()),(int)(dimensionPadre.getHeight()/2));
  45.    }
  46.  
  47.  
  48.  
  49. }
  50.  
  51.  


Clase contenida en el JPanel de la primera clase.En esta clase tambien se encuentra el problema con el posicionamiento del JLabel.

Código
  1.  
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6.  
  7.  
  8. public class MenuBorrarFiguras extends JPanel{
  9.    JPanel menuBorrarID;
  10.    JButton borrarPuntero;
  11.    JLabel titulo;
  12.  
  13.    public MenuBorrarFiguras(){
  14.        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
  15.  
  16.        //Creacion de componentes
  17.        menuBorrarID = new MenuBorrarID();
  18.        //borrarPuntero = new JButton("Borrar con puntero");
  19.  
  20.        titulo =new JLabel("Borrar Figuras");
  21.        titulo.setFont(new Font("Agency FB", Font.BOLD, 14));
  22.        titulo.setAlignmentX(LEFT_ALIGNMENT);
  23.  
  24.  
  25.  
  26.  
  27.  
  28.        //Agregado de elementos al panel
  29.        add(titulo);
  30.        add(menuBorrarID);
  31.        //add(borrarPuntero);
  32.  
  33.  
  34.        //Agregado de eventos a los componentes
  35.  
  36.    }
  37.  
  38.  
  39.    public Dimension getPreferredSize(){
  40.        Container padre =  getParent();
  41.        Dimension dimensionPadre = padre.getSize();
  42.        return new Dimension((int)dimensionPadre.getWidth(),(int)(dimensionPadre.getHeight()/2));
  43.    }
  44.  
  45. }
  46.  


Finalmente una foto de la parte de la Interfaz Grafica donde tengo problemas con los titulos




En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Alinear un JLabel en un Panel
« Respuesta #1 en: 14 Noviembre 2018, 23:34 pm »

Hola,

la clase MenuOpcionesFiguras la tienes en algun JFrame ? 


En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
SDCC

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: Alinear un JLabel en un Panel
« Respuesta #2 en: 15 Noviembre 2018, 00:03 am »

Si , asi es , lo tengo contenida en un JFrame que es la ventana principal y que tiene un layout de tipo BorderLayout.Te adjunto esta clase y una imagen de la interfaz compelta.

Código
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4.  
  5. public class VentanaPrincipal extends JFrame {
  6.    JMenuBar menuArchivos ;
  7.    JPanel menuOpcionesFiguras;
  8.    JPanel pizarron;
  9.    JPanel ayudaMascota;
  10.  
  11.    public VentanaPrincipal(){
  12.  
  13.  
  14.        super("LoroPaint");
  15.        setLayout(new BorderLayout());
  16.  
  17.  
  18.        //Creacion de componentes
  19.  
  20.        menuArchivos = new BarraArchivos();
  21.        setJMenuBar(menuArchivos);
  22.  
  23.        menuArchivos.setBackground(new Color(149, 209, 208));
  24.        menuOpcionesFiguras = new MenuOpcionesFiguras();
  25.        menuOpcionesFiguras.setBackground(new Color(100,156,56));
  26.  
  27.        pizarron = new Pizarron();
  28.        pizarron.setBackground(new Color(230, 255, 255));
  29.        pizarron.setToolTipText("Escenario");
  30.        pizarron.setBorder(BorderFactory.createLineBorder(Color.black));
  31.  
  32.        ayudaMascota = new AyudaMascota();
  33.        ayudaMascota.setBackground(new Color(149, 209, 208));
  34.        ayudaMascota.setToolTipText("Consejos");
  35.        ayudaMascota.setBorder(BorderFactory.createLineBorder(Color.black));
  36.  
  37.  
  38.        //Agregacion de los componentes al panel
  39.        add(menuOpcionesFiguras,BorderLayout.EAST);
  40.        add(pizarron,BorderLayout.CENTER);
  41.        add(ayudaMascota,BorderLayout.SOUTH);
  42.  
  43.  
  44.  
  45.        //Agregar Eventos a los componentes
  46.  
  47.  
  48.  
  49.    }
  50. }

En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Alinear un JLabel en un Panel
« Respuesta #3 en: 15 Noviembre 2018, 01:19 am »

Código
  1. titulo.setAlignmentX(LEFT_ALIGNMENT);
tiene un valor de 0.0f  :xD

quizás te pueda servir con

Código
  1. titulo.setAlignmentX(SwingConstants.LEFT);

SwingConstants.LEFT es una constante que contiene valor 2, y en este caso si lo pone a la izquierda
« Última modificación: 15 Noviembre 2018, 01:47 am por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
SDCC

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: Alinear un JLabel en un Panel
« Respuesta #4 en: 15 Noviembre 2018, 01:49 am »

Ohhh ya veo  :D,solo una duda mas...Veo que realmente si se coloco un poco mas a la izquierda pero crees que haya una forma de colocar totalmente el titulo en el borde izquierdo o tendria que encapsular aun mas mi Panel y mi Titutlo de manera que asignara el borde izquiero a el titulo?
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Alinear un JLabel en un Panel
« Respuesta #5 en: 15 Noviembre 2018, 02:56 am »

Ohhh ya veo  :D,solo una duda mas...Veo que realmente si se coloco un poco mas a la izquierda pero crees que haya una forma de colocar totalmente el titulo en el borde izquierdo o tendria que encapsular aun mas mi Panel y mi Titutlo de manera que asignara el borde izquiero a el titulo?

Código
  1. setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));

cambialo por

Código
  1. setLayout(new FlowLayout(0));

igualmente esta clase new BotonesCrearFiguras(); seguro sera un JPanel ?
« Última modificación: 15 Noviembre 2018, 03:04 am por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Comparativa Antena Panel Pacific Wireless 19 dBi Contra Antena Panel ABAKS 19 dB
Materiales y equipos
pazienzia 2 10,196 Último mensaje 8 Marzo 2010, 20:09 pm
por pazienzia
Alinear botones con gtk
Programación C/C++
soez 1 2,169 Último mensaje 26 Mayo 2010, 00:50 am
por nicolas_cof
alinear capas
Desarrollo Web
jorgebeltranfuentes 4 2,634 Último mensaje 2 Noviembre 2011, 22:44 pm
por jorgebeltranfuentes
Alinear formulario web
PHP
.:UND3R:. 1 2,999 Último mensaje 6 Marzo 2012, 17:15 pm
por Diabliyo
[Duda]Como obtengo el contexto gráfico de un panel para dibujarlo en otro panel
Java
PabloPbl 2 3,428 Último mensaje 20 Febrero 2015, 01:25 am
por PabloPbl
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines