BorderLayout è un LayoutManager... è il più conosciuto e puoi settarlo anche per i JPanel.
Evidentemente il JPanel che contiene la tua JTextArea non ha un layout manager ed è qui che c'è la "pecca"... non sto dicendo che sia sbagliato, solo che solitamente si lascia che sia un LayoutManager a gestire posizionamento e dimensionamento di componenti (per una serie di ragioni che non sto qui a spiegare).
Ad ogni modo, se vuoi mantenere le cose così come stanno devi impostare un ComponentListener sul tuo JFrame:
codice:
// Nel costruttore del tuo JFrame
addComponentListener( new MioComponentListener(this) );
oppure, da un punto in cui il JFrame è raggiungibile
tuoJFrame.addComponentListener( new MioComponentListener(tuoFrame) );
Il ComponentListener va implementato (ComponentListener è un'interfaccia che prevede un po' di metodi... si può, comunque, ricorrere all'estensione di un ComponentAdapter, una classe che implementa l'interfaccia e tutti i suoi metodi vuoti... andando a ridefinire solo il metodo che ci interessa):
codice:
public class MioComponentListener extends ComponentAdapter {
private TuoFrame tuoFrame;
public MioComponentListener(TuoFrame frame) {
this.tuoFrame = frame;
}
@Override
public void componentResized(ComponentEvent ce) {
// Qui vengono notificati i ridimensionamenti del tuo frame
tuoFrame.ridimensionaTextArea();
}
}
Ovviamente, dovrai creare un metodo che io ho chiamato "ridimensionaTextArea" pubblico nella tua classe che estende JFrame (che io ho chiamato TuoFrame). Lì dentro effettuerai il ridimensionamento della tua JTextArea in base alle nuove dimensioni del JFrame.
Il mio consiglio, comunque, rimane valido a maggior ragione se sei agli inizi con le GUI: impara ad usare bene i LayoutManager; puoi partire dal Tutorial sui LayoutManager
Ciao.