我想在我的标签上实现一个滚动条。然而,没有任何显示,也没有例外。
我想我需要一个:
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 );
}
}
如果您有任何疑问,请不要犹豫。
答案 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);
}
你会看到一个滚动条。请注意,此更改包含四个方面:
null
BorderLayout
布局调用
JScrollPane
而不是JPanel
setVisible(true)
电话。