Archief - [PROG]JAVA BoxLayout

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

den Acid Burn

Legacy Member
lo,

ik ben ff verward bij de BoxLayout manager
ik zou iets moeten hebben in deze aard:

PHP:
 -----------------------------
|   dit is een JTextArea          |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
 -----------------------------

         ____________________
label: |___________________| --> JTextField
         ____________________
label: |___________________| --> JTextField

dit is de code die ik heb:
PHP:
rightPanel = new JPanel();
		rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
		
		onlineTextArea = new JTextArea(16,27);
		onlineTextArea.setFont(new Font("Arial",Font.PLAIN,10));
		onlineTextArea.setBackground(Color.WHITE);
		onlineTextArea.setLineWrap(true);
		rightScrollPane = new JScrollPane();
		rightScrollPane.setViewportView(onlineTextArea);
		rightPanel.add(rightScrollPane);
		rightPanel.setBorder(BorderFactory.createTitledBorder("computers online"));
		
		rightPanel.add(Box.createRigidArea(new Dimension(0,10)));
		inputIP = new JTextField(5);
		rightPanel.add(inputIP);
		
		rightPanel.add(Box.createRigidArea(new Dimension(0,10)));
		inputTTL = new JTextField(5);
		rightPanel.add(inputTTL);

maar hiermee zijn de JTextFields even breed als de JTextArea en ook een stuk hoger als normaal.
ik geef ze tans een width van 10

iemand ervaring met deze layout manager?


grtz

den Acid Burn

Legacy Member
nochtans staat in de documentatie van sun dat de BoxLayout manager nooit de size van componenten gaat aanpassen.
maar andere Layout Managers doe dit wel.

mss gebeurt dit omdat ik op de JFrame zelf een BorderLayout heb gezet.
ik heb namelijk een LeftPanel (staat op BorderLayout.WEST), een rightPanel (BorderLayout.EAST) en een statusPanel (BorderLayout.SOUTH)

maar zou niet dadelijk weten hoe het anders te doen :)


*EDIT:
blijkbaar niet
ik heb de code in eens een testclass gestoken en uitgevoerd (ditmaal dus zonder layout manager op de JFrame), met hetzelfde resultaat :(

het rare is dat buttons wel hun normale grootte houden, maar JTextFields worden even breed als de JTextArea :s

.Acku.

Legacy Member
http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html

As we mentioned before, BoxLayout pays attention to a component's requested minimum, preferred, and maximum sizes. While you're fine tuning the layout, you might need to adjust these sizes.

Sometimes the need to adjust the size is obvious. For example, a button's maximum size is generally the same as its preferred size. If you want the button to be drawn wider when additional space is available, then you need to change its maximum size.


You can change the minimum, preferred, and maximum sizes in two ways:

By invoking the appropriate setXxxSize method (which is defined by the JComponent class). For example:
comp.setMinimumSize(new Dimension(50, 25));
comp.setPreferredSize(new Dimension(50, 25));
comp.setMaximumSize(new Dimension(Short.MAX_VALUE,
Short.MAX_VALUE));

By overriding the appropriate getXxxSize method. For example:
...//in a subclass of a component class:
public Dimension getMaximumSize() {
size = getPreferredSize();
size.width = Short.MAX_VALUE;
return size;
}

den Acid Burn

Legacy Member
ik was net dezelfde info aan tlezen acku :)

na wat gekloot met setPreferredSize, setMaximumSize en .setAlignmentX is het dan toch uiteindelijk tegoei gekomen.

thx!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan