# Größe einer JTextArea dynamisch anpassen.



## Jman (21. Feb 2007)

ich möchte die Größe einer JTextArea mit Hilfe von zwei Buttons '+' und '-' benutzergesteuert verändern.
Mit der setRows-Methode kann man allerdings nur die internen Reihen anpassen, die TextArea wird
jedoch nicht größer oder kleiner gezeichnet. Bei einer Anpassung von setSize geschieht auch nichts. Was kann ich tun?


----------



## Jman (21. Feb 2007)

mein Code ist:


```
class CalculatorGUITextArea extends JPanel
{
	private JButton addRowButton;
	private JScrollPane scroll;
	private JButton minusRowButton;
	private JTextArea textArea;
	    
	private GroupLayout layout;
	private TextAreaRowListener rowListener;
	public CalculatorGUI cg;
	public CalculatorGUITextArea(CalculatorGUI cg)
	{
	    scroll = new JScrollPane();
	    textArea = new JTextArea();
	    addRowButton = new JButton("+");
	    minusRowButton = new JButton("-");
	    
	    layout = new GroupLayout(this);
                       setLayout(layout);
        
		buildGUI();
	}
	
	public void minusRow()
	{
                                     textArea.setRows(textArea.getRows()-1)
		revalidate();	
	}
	
	public void addRow()
	{
		Dimension d=textArea.getSize();
		textArea.setSize(d.width, d.height+10);
		
		revalidate();
	}
	
	public void buildGUI()
	{
		textArea.setColumns(20);
        textArea.setRows(5);
        scroll.setViewportView(textArea);

        rowListener=new TextAreaRowListener(this);
        addRowButton.setMargin(new Insets(1, 1, 1, 1));
        addRowButton.addActionListener(rowListener);
        minusRowButton.setMargin(new Insets(1, 1, 1, 1));
        minusRowButton.addActionListener(rowListener);

        
        layout.setHorizontalGroup(
                layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                        .addComponent(minusRowButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(addRowButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(scroll, GroupLayout.PREFERRED_SIZE, 336, GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(33, Short.MAX_VALUE))
            );
       layout.setVerticalGroup(
                layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(addRowButton)
                            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 102, Short.MAX_VALUE)
                            .addComponent(minusRowButton))
                        .addComponent(scroll, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE))
                    .addContainerGap())
            );
	}
}
```

der Listener ruft nur die beiden Methoden auf, deshalb poste ich den nicht.


----------



## The_S (22. Feb 2007)

setPreferredSize verwenden. Inwiefern das aber mit dem GroupLayout vereinbar ist, kann ich leider nicht sagen, da ich dieses Layout noch nie verwendet habe ...


----------

