java swing jframe jscrollpane jtabbedpane

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:

  1. reemplace la llamada de diseño null con un BorderLayout
  2. hacer un JScrollPane lugar de un JPanel
  3. agregar algo al panel con fines de demostración
  4. eliminar la innecesaria setVisible(true) .