How to add a JScrollPane onto a JTabbedPane using a null layout?

怎甘沉沦 提交于 2019-12-11 01:14:31

问题


I want to implement a Scrollbar onto my Tab. However nothing is showing and there are no exceptions.

I think I need a:

scrollPane.setViewportView(scrollPanel);

But it didn't work as well.

I am wondering when adding a Jscrollpane onto a JTab how do you set it visible without using an explicit frame. If I use a frame and add it on the frame it creates a new window. However how I got this program the Frame looks built I assume and this complicates everything.

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

If you have any questions don't hesitate to ask.


回答1:


What you want is to use a JScrollPane. Change the createPage1() method to something like this:

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

And you will see a scrollbar. Note this change encompasses four things:

  1. replace the null layout call with a BorderLayout
  2. make a JScrollPane instead of a JPanel
  3. add something to the pane for demo purposes
  4. remove the unnecessary setVisible(true) call.


来源:https://stackoverflow.com/questions/15930621/how-to-add-a-jscrollpane-onto-a-jtabbedpane-using-a-null-layout

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!