web-dev-qa-db-ja.com

JTextAreaのスクロールバー

JTextAreaにスクロールバーを追加するにはどうすればよいですか?

45
Raji

Fredrikが 彼の答え で言及しているように、これを達成する簡単な方法は、 JTextAreaJScrollPane 。これにより、JTextAreaの表示領域をスクロールできます。

完全を期すために、次の方法で実現できます。

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   // JTextArea is placed in a JScrollPane.

JTextAreaJScrollPaneに含まれたら、JScrollPaneをテキスト領域のある場所に追加する必要があります。次の例では、スクロールバーのあるテキスト領域がJFrameに追加されます。

JFrame f = new JFrame();
f.getContentPane().add(sp);

コメントでJScrollPaneではなくJTextAreaをコンテナに追加する必要があることをkd304に感謝します-追加するのはよくあるエラーだと思いますテキスト領域付きのスクロールペインではなく、テキスト領域自体を宛先コンテナに。

The Java Tutorials )の次の記事に詳細があります。

72
coobird

JScrollPaneに入れます

編集:ここにあなたのためのリンクがあります: http://Java.Sun.com/docs/books/tutorial/uiswing/components/textarea.html

18
Fredrik

最初に、通常どおりJTextAreaを定義する必要があります。

public final JTextArea mainConsole = new JTextArea("");

次に、TextAreaにJScrollPaneを配置します

JScrollPane scrollPane = new JScrollPane(mainConsole);
scrollPane.setBounds(10,60,780,500);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

最後の行は、垂直スクロールバーが常に存在することを示しています。水平方向にも同様のコマンドがあります。それ以外の場合、スクロールバーは必要な場合にのみ表示されます(_SCROLLBAR_​​NEVERを使用する場合は表示されません)。どのように使いたいかはあなたの電話だと思います。

必要に応じて、JTextAreaにワードラップを追加することもできます: Guide Here

がんばろう、
Norm M

追伸JTextAreaを追加しないで、ScrollPaneをJPanelに追加してください。

15
Norm MacLennan
            txtarea = new JTextArea(); 
    txtarea.setRows(25);
    txtarea.setColumns(25);
    txtarea.setWrapStyleWord(true);
    JScrollPane scroll = new JScrollPane (txtarea);
    panel2.add(scroll); //Object of Jpanel

上記の行は、水平と垂直の両方のスクロールバーを自動的に表示します。

「coobird」という名前のユーザーの一番上の最初の投稿に感謝したいだけです。私はこのstackoverflow.comのウェブサイトは初めてですが、このコミュニティがどれほど便利で役立つか信じられません...素晴らしいヒントを投稿して他の人にアドバイスしてくれたすべての人に感謝します。それがコミュニティのすべてです。

今coobirdは正しく言った:

Fredrikが答えで述べているように、これを達成する簡単な方法は、JTextAreaをJScrollPaneに配置することです。これにより、JTextAreaのビュー領域をスクロールできます。

私は言いたいです:

上記の記述は完全に真実です。実際、WindowBuilder Proプラグインを使用してEclipseでこれに苦労していたのは、ウィジェットのどの組み合わせがそれを達成するのに役立つかわからなかったためです。しかし、coobirdの投稿のおかげで、何日もかかるこのフラストレーションを解決することができました。

また、私は原則に堅固な基礎があるにもかかわらず、私はJavaに比較的新しいことを付け加えます。コードスニペットとここで提供するアドバイスは非常に便利です。

私は他の人を助けるかもしれない他の1つのtidビットを追加したいだけです。 (スクロール可能なテキスト領域の作成方法を示すために)Coobirdが次のようなコードを配置していることに気付きました。彼が書きました:

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   

上記のcoobirdのコードスニペットに感謝します。私はそのように直接試したことはありませんが、うまくいくと確信しています。ただし、WindowBuilder Proツールを使用してこれを行ったときに、次のようになったことを知っておくと便利な場合があります(WindowBuilderが目的を達成するためのもう少し長い「間接的な」方法だと思います)上記の2行を参照してください。私のコードは次のようになります。

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(23, 40, 394, 191);
frame.getContentPane().add(scrollPane);

JTextArea textArea_1 = new JTextArea();
scrollPane.setViewportView(textArea_1);`

WindowBuilderは基本的にscrollpaneと呼ばれるJScrollPaneを(コードの最初の3行で)作成することに注意してください。その後、次の行でviewportviewを設定します:scrollPane.setViewportView(textArea_1)。そのため、本質的に、この行は私のコードにtextArea_1を追加し(明らかにJTextArea)、JScrollPaneに追加します(これはまさにcoobirdが話していたことです)。

これが役立つことを願っています。なぜなら、Coobirdのアドバイスが正しくない、または何かだと思ってWindowBuilder Pro開発者に混乱させたくないからです。

すべての幸せなコーディングと幸せなコーディング:)

2
user2538501

JScrollPanを使用してJScrollBarにJTextAreaを追加する簡単な方法

import javax.swing.*;
public class ScrollingTextArea 
{
     JFrame f;
     JTextArea ta;
     JScrollPane scrolltxt;

     public ScrollingTextArea() 
     {
        // TODO Auto-generated constructor stub

        f=new JFrame();
        f.setLayout(null);
        f.setVisible(true);
        f.setSize(500,500);
        ta=new JTextArea();
        ta.setBounds(5,5,100,200);

        scrolltxt=new JScrollPane(ta);
        scrolltxt.setBounds(3,3,400,400);

         f.add(scrolltxt);

     }

     public static void main(String[] args) 
     {
        new ScrollingTextArea();
     }
}
1