I am a java beginner and I want to make a simple text editor but I find the following problem. The JTextArea doesn't re-size along with the JFrame. Here is my code :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class textEditor
{
JFrame frame;
JTextArea textArea;
JScrollPane scrollPane;
//JButton button;
public textEditor() //Constructor
{
frame = new JFrame("Title of the frame!");
frame.setLayout(new FlowLayout());
textArea = new JTextArea("");
scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
//button = new JButton();
}
public void launchFrame()
{
//Adding Text Area and ScrollPane to the Frame
frame.getContentPane().add(textArea);
frame.getContentPane().add(scrollPane);
//Make the Close button to close the frame when clicked
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Displaying the Frame
frame.setVisible(true);
frame.pack();
}
public static void main(String args[])
{
textEditor window=new textEditor();
window.launchFrame();
}
}
Please don't forget that I'm a beginner so please give me a solution in simple words.
The JTextArea doesn't re-size along with the JFrame as you are using a FlowLayout
manager which uses preferred sizes of components instead of expanding them to fill the full space of the container. To fix you can remove the line:
frame.setLayout(new FlowLayout());
JFrame
containers use BorderLayout
manager by default, which will do the necessary sizing that you are looking for.
Also remove the line
frame.getContentPane().add(textArea);
as only the JScrollPane
is required to be added to the frame.