3

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

私が初心者であることを忘れないでください。簡単な言葉で解決策を教えてください。

4

1 に答える 1

4

FlowLayoutJTextArea は、コンテナの全スペースを埋めるためにコンポーネントを拡張するのではなく、コンポーネントの推奨サイズを使用するマネージャーを使用しているため、JFrame と一緒にサイズ変更されません。修正するには、次の行を削除できます。

frame.setLayout(new FlowLayout());

JFrameコンテナはBorderLayoutデフォルトでマネージャーを使用し、探している必要なサイジングを行います。

ラインも外す

frame.getContentPane().add(textArea);

のみJScrollPaneをフレームに追加する必要があるためです。

于 2012-10-07T10:35:27.013 に答える