Pregunta

Tengo una pregunta.

Tengo el siguiente programa y tengo problemas con una cosa. He creado un diseño de cuadrícula, y estoy usando jpanel para ingresar botones y texto con en la cuadrícula, pero todo parece cambiar el tamaño si mi texto es muy largo. ¿Alguien puede ayudarme con cómo puedo evitar que esto suceda?

Este es mi código:

package JFrameTester;

import java.awt.*;
import javax.swing.*;



public class JFrameTester {


public JPanel createContentPane (){

        JPanel panel = new JPanel();
        JButton button1,button2,button3,button4;

        JPanel mainPanel = new JPanel(new GridLayout(2, 0, 40, 10));

        //JPanel red = createSquareJPanel(Color.red, 50);
        button1 =  new JButton ("button1");
        button2 =  new JButton ("button2");
        button3 =  new JButton ("button3");
        button4 =  new JButton ("button4");
        Label one   = new Label("Rohihtjthjhtjghjghmgfjgjghjghj");
        //add(button1);


        mainPanel.add(button1);
        mainPanel.add(one);
        mainPanel.add(button2);
        mainPanel.add(button3);
        mainPanel.add(button4);


        panel.add(mainPanel);
        panel.setOpaque(true);
        return panel;
    }


    public static void main(String[] args) {

        JFrame frame = new JFrame("GridLayout");
        JFrameTester Display = new JFrameTester();
        frame.setContentPane(Display.createContentPane());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);


 }
}
¿Fue útil?

Solución

Eso es lo que hacen los gerentes de diseño; Asignan suficiente espacio para cada componente. Podrías intentar incrustar HTML en el JLabel instancia para que se envuelva. De lo contrario, solo tendrás que vivir con eso.

También es importante tener en cuenta que un JPanel La instancia es opaca de forma predeterminada.

Otros consejos

Bueno ... lo primero es lo primero. Estás declarando un GridLayout de 2 filas, 0 columnas. ¿Es esto exactamente lo que quieres? Estoy pensando que no.

La siguiente parte es donde estás agregando contenido. La cuadrícula generalmente se mantiene en un tamaño dinámico. Retirará las celdas al valor más pequeño posible que puedan. Pero cuando algunos contenidos se están haciendo más grandes (grandes jPanels de texto) expandirá la celda.

Dependiendo del contenido de la celda, permanecerán estáticos o intentarán llenar todo el espacio disponible.

Si estoy leyendo su pregunta correctamente, lo que querrá hacer es establecer un tamaño estático para sus jbutton utilizando las funciones para JComponents Ver el enlace de Javadoc aquí. Probablemente quieras usar setMaximumSize(new Dimension(width,height)); para cada botón.

¿Tiene sentido?

En otros comentarios. Si desea más control sobre su diseño, busque un uso de un GrabBagLayout. Más trabajo, pero más control.

Esta es una publicación más antigua, pero me topé con esto, mientras busqué el mismo problema. El uso de Frame.pack () se usa para mover todo para que se ajuste al tamaño del panel dado. Entonces, si aumenta el tamaño de una cosa, otras cosas se encogen y se mueven para caber en el panel.

fuente: http://www.macs.hw.ac.uk/guidebook/?name=jframe&page=2

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top