java - ¿Cómo agregar un JScrollPane en un JTabbedPane usando un diseño nulo?
swing jframe (1)
Quiero implementar una barra de desplazamiento en mi pestaña. Sin embargo, nada se muestra y no hay excepciones.
Creo que necesito un:
scrollPane.setViewportView (scrollPanel);
Pero no funcionó tan bien.
Me pregunto si al agregar un Jscrollpane en un JTab, ¿cómo lo configuras visible sin usar un marco explícito? Si utilizo un marco y lo agrego al cuadro, crea una nueva ventana. Sin embargo, como obtuve este programa, el Marco parece construido, lo asumo y esto complica todo.
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 );
}
}
Si tiene alguna pregunta, no dude en preguntar.
Lo que quieres es usar un JScrollPane
. Cambie el método createPage1()
a algo como esto:
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);
}
Y verá una barra de desplazamiento. Tenga en cuenta que este cambio abarca cuatro cosas:
- reemplace la llamada de diseño
null
con unBorderLayout
- hacer un
JScrollPane
lugar de unJPanel
- agregar algo al panel con fines de demostración
- eliminar la innecesaria
setVisible(true)
.