Java - Limitar ancho JTextArea en BorderLayout.CENTER

 
Vista:
Imágen de perfil de Juan

Limitar ancho JTextArea en BorderLayout.CENTER

Publicado por Juan (6 intervenciones) el 17/08/2016 18:39:10
Hola a todos, soy nuevo en este foro y MUY novato en esto de java.
Estoy ejercitando con layouts y estoy trabado en esta parte.

Tengo la siguiente pantalla la cual tiene un area de texto, al maximizar la ventana
el area de texto debe crecer de ancho pero solo hasta un cierto limite (X).

Es posible limitar el ancho maximo de esa area de texto ?
El area que habria que limitar es la blanca.


Sin-titulo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.awt.*;
import javax.swing.*;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
 
public class LimitarAncho {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		CrearVentana001 crearVentana001 = new CrearVentana001();
 
	}
 
}
 
class CrearVentana001 {
 
	JFrame ventana001 = new JFrame();
 
	JPanel marcoFlow001 = new JPanel();
	JPanel marcoBorder001 = new JPanel();
	JPanel marcoGrid001 = new JPanel();
	JPanel marcoBox001 = new JPanel();
	JPanel marcoBox002 = new JPanel();
	JPanel marcoBox003 = new JPanel();
	JPanel marco001 = new JPanel();
 
	JButton boton001 = new JButton("Boton001");
	JButton boton002 = new JButton("Boton002");
	JButton boton003 = new JButton("Boton003");
 
	JTextArea areaTexto001 = new JTextArea(300,300);
 
	JScrollPane jscrollPane001 = new JScrollPane();
 
		public CrearVentana001(){
 
			marcoBorder001.setLayout(new BorderLayout()); //Panel Principal
 
			marcoGrid001.setLayout(new GridLayout(3,1,1,1));//aca ban los botones 			
			//////
			marcoGrid001.add(boton001);
			marcoGrid001.add(boton002);
			marcoFlow001.add(marcoGrid001); // con el FlowLayout "protejo" las proporciones del Grid
 
			marcoBorder001.add(marcoFlow001,BorderLayout.WEST);
 
			// dentro del este box va lo que esta en el BorderLayout.CENTER del principal
			marcoBox002.setLayout(new BoxLayout(marcoBox002,BoxLayout.X_AXIS));
 
			boton003.add(Box.createRigidArea(new Dimension(150,30)));
			marco001.add(boton003); //
			marco001.setBorder(BorderFactory.createLineBorder(Color.black));
 
 
			// ESTA AREA DE TEXTO ES EL PROBLEMA.
 
			marcoBox003.setLayout(new BoxLayout(marcoBox003, BoxLayout.X_AXIS));
 
			jscrollPane001.setViewportView(areaTexto001);
 
			marcoBox003.add(jscrollPane001,BorderLayout.CENTER);
 
			// AGREGO todo al BoxLayout y esto va al BorderLayout.CENTER del principal
 
			marcoBox002.add(marco001);
			marcoBox002.add(marcoBox003);
 
			marcoBorder001.add(marcoBox002,BorderLayout.CENTER);
 
			ventana001.add(marcoBorder001);
 
			ventana001.setBounds(300,300,600,600);
			ventana001.setVisible(true);
 
 
		}
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Limitar ancho JTextArea en BorderLayout.CENTER

Publicado por Tom (1831 intervenciones) el 19/08/2016 11:41:25
Todo esto está explicado bastante bien en la documentación de swing:
https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

El BorderLayout, en principio, reasigna todo el tamaño libre a la zona CENTER.
Así, si cambias el tamaño de un Container con el layout BorderLayout, las zonas NORTH y SOUTH se reconfiguran para cambiar su anchura (pero no su altura), las zonas EAST y WEST cambiarán en altura, pero no en anchura, y el resto del espacio se asignará a la zona CENTER.

En tu caso, lo mejor que puedes hacer es asignar el BorderLayout al JFrame, y situar en la zona CENTER el JScrollPane que contiene el JTextArea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar