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);
}

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

  1. null布局调用替换为BorderLayout
  2. 做一个JScrollPane而不是一个JPanel
  3. 出于演示目的在窗格中添加一些内容
  4. 删除不必要的setVisible(true)电话。
于 2013-04-10T16:00:15.597 回答