如何使用空布局将 JScrollPane 添加到 JTabbedPane 上?

Use*_*job 2 java swing jframe jscrollpane jtabbedpane

我想在我的选项卡上实现一个滚动条。然而,什么都没有显示,也没有例外。

我想我需要一个:

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 );
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您有任何问题,请随时提出。

Rob*_*b I 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);
}
Run Code Online (Sandbox Code Playgroud)

你会看到一个滚动条。请注意,此更改包含四件事:

  1. null用一个替换布局调用BorderLayout
  2. 做一个JScrollPane而不是一个JPanel
  3. 出于演示目的向窗格添加内容
  4. 删除不必要的setVisible(true)电话。