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

时间:2013-04-10 15:51:19

标签: java swing jframe jscrollpane jtabbedpane

我想在我的标签上实现一个滚动条。然而,没有任何显示,也没有例外。

我想我需要一个:

  

scrollPane.setViewportView(scrollPanel);

但它也不起作用。

我想知道在JTab上添加Jscrollpane时如何在不使用显式框架的情况下将其设置为可见。如果我使用框架并将其添加到框架上,则会创建一个新窗口。 然而,我如何得到这个程序框架看起来是我假设的,这使一切变得复杂。

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

如果您有任何疑问,请不要犹豫。

1 个答案:

答案 0 :(得分:3)

你想要的是使用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
  2. 替换BorderLayout布局调用
  3. 制作JScrollPane而不是JPanel
  4. 为了演示目的在窗格中添加内容
  5. 删除不必要的setVisible(true)电话。