texto setrowheaderview que docs agregar java swing layout jscrollpane

java - setrowheaderview - Formateo de JScrollPane para mostrar el Triángulo de Pascals



setrowheaderview java (3)

  1. Use un JTextArea
  2. Déle una fuente monoespaciada, es decir, Font.MONOSPACED
  3. Agregue sus líneas de texto a JTextArea, de forma similar a como lo haría en la consola.
  4. Coloque JTextArea en un JScrollPane
  5. Voilà. Ya terminaste

  6. Si necesita utilizar JLabels, colóquelos en un JPanel que use GridLayout con suficientes columnas para mostrar su fila inferior.

  7. Si hicieras esto, estarías poniendo JLabels vacías en cada otra celda, para que las células se ramifiquen correctamente.

así que quiero hacer que mi Jscrollpane muestre el triángulo de Pascals. Tengo esto:

labelPanel= new JPanel(); lRows = new JLabel[n]; for (int i=0;i<n;i++){ lRows[i]=new JLabel(Arrays.toString(tri.tri[i])); labelPanel.add(lRows[i]); }

Pero no es lo que quiero y no estoy seguro de cómo solucionarlo, imagen incluida. ¿Alguna ayuda?


Por defecto, JPanel usa un diseño de flujo. Para obtener la disposición vertical que está buscando, debe poder hacer esto usando un BoxLayout con una orientación vertical en su labelPanel , luego agregue las filas de JLabel .

labelPanel= new JPanel(); //set this up to order things vertically labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.Y_AXIS)); lRows = new JLabel[n]; for (int i=0;i<n;i++){ lRows[i]=new JLabel(Arrays.toString(tri.tri[i])); //to center your label, just set the X alignment lRows[i].setAlignmentX(Component.CENTER_ALIGNMENT) labelPanel.add(lRows[i]); }

También lancé una línea para centrar las filas como tu foto. Component proviene del paquete java.awt .

Puede leer en los diferentes administradores de diseño disponibles de forma predeterminada en el tutorial de Java


La solución más fácil es rotar el triángulo para que se vea así:

1 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 1 4 10 20 1 5 15 1 6 1

Sin embargo, si debe imprimir algo así

Lo hice de esta manera:

for (int i = 0; i<n; i++){ for (int j = 0; j<Triangle.trojkat[i].length; j++){ sb.append(Triangle.trojkat[i][j]); len = String.valueOf(Triangle.trojkat[i][j]).length(); while (12-len>0){ sb.append(" "); len++; } //sb.append(" "); } TriangleRes[i] = new JLabel(sb.toString(), JLabel.CENTER); TriangleRes[i].setFont(new Font("Serif",Font.PLAIN,8)); sb = new StringBuilder(); }

Déjenme explicarles: decidí que quería que mi estampado de triángulo fuera hermoso para el tamaño más pequeño que 35. Luego, he comprobado que los números en dicho triángulo tienen hasta 10 dígitos. Luego, cuando agregué el siguiente número a la fila existente, verifiqué su longitud y, aunque la longitud total aún no era 12, agregué espacios. Esto lleva al triángulo que has adjuntado en la imagen.

Si esto es para las clases de Ph.D Macyna, solo publique una pregunta en un grupo y responderé :)