31

テキスト領域にスクロール バーを追加するにはどうすればよいですか。このコードを試してみましたが、うまくいきません。

middlePanel=new JPanel();
middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));

// create the middle panel components
display = new JTextArea(16, 58);
display.setEditable(false); // set textArea non-editable
scroll = new JScrollPane(display);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

//Add Textarea in to middle panel
middlePanel.add(scroll);
middlePanel.add(display);
4

4 に答える 4

55

ここで JTextArea を JScrollPane に追加した後:

scroll = new JScrollPane(display);

次のように他のコンテナーに再度追加する必要はありません。

middlePanel.add(display);

コードの最後の行を削除するだけで、正常に動作します。このような:

    middlePanel=new JPanel();
    middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));

    // create the middle panel components

    display = new JTextArea(16, 58);
    display.setEditable(false); // set textArea non-editable
    scroll = new JScrollPane(display);
    scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

    //Add Textarea in to middle panel
    middlePanel.add(scroll);

JScrollPane は、必要に応じてコンポーネントの周りにスクロールバーを配置する別のコンテナーであり、独自のレイアウトも備えています。何かをスクロールにラップしたい場合に必要なことは、それを JScrollPane コンストラクターに渡すだけです。

new JScrollPane( myComponent ) 

または次のようにビューを設定します。

JScrollPane pane = new JScrollPane ();
pane.getViewport ().setView ( myComponent );

追加:

まだ機能していないため、完全に機能する例を次に示します。

public static void main ( String[] args )
{
    JPanel middlePanel = new JPanel ();
    middlePanel.setBorder ( new TitledBorder ( new EtchedBorder (), "Display Area" ) );

    // create the middle panel components

    JTextArea display = new JTextArea ( 16, 58 );
    display.setEditable ( false ); // set textArea non-editable
    JScrollPane scroll = new JScrollPane ( display );
    scroll.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );

    //Add Textarea in to middle panel
    middlePanel.add ( scroll );

    // My code
    JFrame frame = new JFrame ();
    frame.add ( middlePanel );
    frame.pack ();
    frame.setLocationRelativeTo ( null );
    frame.setVisible ( true );
}

そして、ここにあなたが得るものがあります: ここに画像の説明を入力

于 2012-04-16T15:44:45.473 に答える
3

この 2 行をコードに追加してみてください。うまくいくことを願っています。それは私のために働いた:)

display.setLineWrap(true);
display.setWrapStyleWord(true);

出力の写真を以下に示します

ここに画像の説明を入力

于 2015-10-20T22:46:25.727 に答える