Kevin
Kevin

Reputation: 6711

Advice required in making a simple text editor using the Java Swing Class Library

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.

Upvotes: 3

Views: 942

Answers (2)

Adeeb Bin Huda
Adeeb Bin Huda

Reputation: 11

remove the line as:

  • frame.pack();

with that also use :

  1. frame.setSize(450, 550);
  2. frame.setResizable(true);
  3. frame.setVisible(true);

Upvotes: 1

Reimeus
Reimeus

Reputation: 159874

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.

Upvotes: 4

Related Questions