使用Java Swing类库制作简单文本编辑器所需的建议

时间:2012-10-07 10:24:36

标签: java swing awt

我是一名java初学者,我想制作一个简单的文本编辑器但是我发现了以下问题。 JTextArea不会与JFrame一起重新调整大小。这是我的代码:

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();
}
}

请不要忘记我是初学者所以请用简单的语言给我一个解决方案。

1 个答案:

答案 0 :(得分:4)

当您使用FlowLayout管理器时,JTextArea不会与JFrame一起重新调整大小,该管理器使用首选组件大小而不是扩展它们以填充容器的整个空间。要解决此问题,您可以删除该行:

frame.setLayout(new FlowLayout());

JFrame个容器默认使用BorderLayout管理器,这将执行您正在寻找的必要大小。

同时删除该行

frame.getContentPane().add(textArea);

因为只需要将JScrollPane添加到框架中。