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)
如果您有任何问题,请随时提出。
你想要的是使用一个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)
你会看到一个滚动条。请注意,此更改包含四件事:
null用一个替换布局调用BorderLayoutJScrollPane而不是一个JPanelsetVisible(true)电话。