Necesito solución similar a la GridLayout pero sin cambiar el tamaño de los componentes en JPanel.

Todo funciona muy bien con JFrame, pero tengo que poner los componentes en JPanel lugar JFrame.

  • «Todo funciona muy bien con JFrame, pero tengo que poner los componentes en JPanel en lugar JFrame» Desde un marco y panel pueden tener el mismo gestor de diseño, no veo la relevancia de esa declaración.
  • Si su pregunta ya ha sido contestada, o si es que ya no es válida, por favor «tick» para elegir la respuesta más apropiada de modo que todo el mundo sabe que el problema ha sido resuelto. Gracias

3 Comentarios

  1. 4

    He visto dos enfoques que pueden adaptarse a sus necesidades:

    • Nido de cada componente en un JPanel tener FlowLayout, que respeta el componente del tamaño preferido, como se muestra aquí.

    • Utilizar el HORIZONTAL_WRAP o VERTICAL_WRAP orientación de JList, como se muestra aquí.

    • interesante idea con JList
  2. 3

    El siguiente enlace puede ayudarle a elegir la disposición más apropiada para sus necesidades. Sus Java Tutorial llamado «Una Guía Visual para el Gestor de Diseño», que muestra imágenes de cada diseño, y por lo que parece…

    http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

    De lo contrario, si usted dice GridLayout es similar a lo que usted necesita, usted siempre puede escribir su propio MyGridLayout de la clase (que se extiende GridLayout) y sobrescribir el método que realiza la autoresizing.

  3. 1

    Acaba de Anular preferredLayoutSize() en flowlayout y tamaño Máximo establecido para la misma. establecer la Alineación como LÍDER y la puso a su JPanel. Usted conseguirá lo que usted desea

    private FlowLayout getFlowLayout(int maximumSize)
          {
            if (flowLayout == null)
            {
              flowLayout = new FlowLayout()
              {
                @Override 
                public Dimension preferredLayoutSize(Container target)
                {
                  Dimension dimension = super.preferredLayoutSize(target);
                  dimension.width = Math.min(maximumSize, dimension.width);
                  return dimension;
                }
              };
              flowLayout.setAlignment(FlowLayout.LEADING);
            }
            return flowLayout;
          }

Dejar respuesta

Please enter your comment!
Please enter your name here