2

タブにスクロールバーを実装したいと思います。ただし、何も表示されず、例外はありません。

私は必要だと思います:

scrollPane.setViewportView(scrollPanel);

しかし、うまくいきませんでした。

Jscrollpane を JTab に追加するときに、明示的なフレームを使用せずに表示する方法を知りたいです。フレームを使用してフレームに追加すると、新しいウィンドウが作成されます。ただし、このプログラムをどのように取得したかは、フレームが構築されているように見えるため、すべてが複雑になっていると思います。

import java.awt.*;
import javax.swing.*;

public class Test extends JFrame {

    private     JTabbedPane tabbedPane;
    private     JPanel      panel; // Page where I want JScrollPane intisialized

    public Test()
    {
        setTitle( "Program" );
        setSize( 400, 200 ); // I want the JScrollPane to extend to 400 vertically


        JPanel topPanel = new JPanel();
        topPanel.setLayout( new BorderLayout() );
        getContentPane().add( topPanel );

        // Create the tab pages
        createPage1();

        tabbedPane = new JTabbedPane();
        tabbedPane.addTab( "Welcome", panel );
        topPanel.add( tabbedPane, BorderLayout.CENTER );    
    }

    public void createPage1()
    {
        panel = new JPanel();
        panel.setLayout( null ); // sets layout to null

////////////////////////
JPanel scrollPanel = new JPanel();
scrollPanel.setLayout(null);
scrollPanel.setPreferredSize(new Dimension(400,400));
///////////////////////

        panel.add(scrollPanel);
        scrollPanel.setVisible (true);

    }

    public static void main( String args[] )
    {
        // Create an instance of the test application
        Test mainFrame  = new Test();
        mainFrame.setVisible( true );
    }
}

ご不明な点がございましたら、お気軽にお問い合わせください。

4

1 に答える 1

5

あなたが望むのは、を使用することJScrollPaneです。createPage1()メソッドを次のように変更します。

public void createPage1()
{
    panel = new JPanel();
    panel.setLayout( new BorderLayout() );

    ////////////////////////
    JScrollPane scrollPanel = new JScrollPane();
    scrollPanel.setViewportView(new JLabel("hellossssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"));
    scrollPanel.setPreferredSize(new Dimension(400,400));
    ///////////////////////

    panel.add(scrollPanel,BorderLayout.CENTER);
}

そして、スクロールバーが表示されます。この変更には、次の 4 つの事項が含まれることに注意してください。

  1. レイアウトnull呼び出しをBorderLayout
  2. JScrollPane代わりにJPanel
  3. デモ目的でペインに何かを追加する
  4. 不要なsetVisible(true)呼び出しを削除します。
于 2013-04-10T16:00:15.597 に答える