Painel deslizante é um componente da interface gráfica que permite que o usuário redimensione componentes contidos normalmente dentro de duas células que podem ser posicionadas na horizontal ou vertical.
JSplitPane é usada para dividir dois (e somente dois) componentes. Os dois componentes são graficamente divididos de acordo com o look and feel de implementação, e os dois componentes podem ser interativamente redimensionados pelo usuário.
Exemplo:
Neste exemplo criamos um painel de rolagem divido na horizontal que contem dois componentes que podem ser redimensionados pelo usuário, respeitando o tamanho mínimo de cada componente.
Java
import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; public class Spliter { // Declara componentes URL url; BufferedImage imagem; // Declara variaveis String txt = "O balonismo é um esporte aeronáutico praticado com um balão de ar quente.\n"+ "Possui adeptos em todo o mundo. No Brasil, o esporte começou a se popularizar\n" + "a partir dos anos 90.\n"+ "O balão é considerado uma aeronave assim como avião, helicópteros e outros.\n" + "Por esta razão o balão deve ter uma matricula (prefixo) registrado junto\n" + "à ANAC, seu piloto deve possuir uma licença (brevê) específico para a pratica\n" + "do balonismo também emitido pela ANAC."; public Container criaPainel() { // Cria painel principal JPanel painel = new JPanel(); // Define layout painel.setLayout(new BorderLayout()); painel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); // Cria area de texto JTextArea area = new JTextArea(txt); // Cria painel para area JScrollPane areap = new JScrollPane(area); // Cria componente para imagem JLabel figura = new JLabel(); // Tenta ler a imagem da internet try { // Carrega imagem url = new URL("https://desenvolvimentoaberto.files.wordpress.com/2014/04/balonismo.jpg?"); imagem = ImageIO.read(url); } catch ( IOException e) { e.printStackTrace(); } // Mostra imagem ImageIcon fig = new ImageIcon(imagem); figura = new JLabel(fig); // Cria painel da imagem JScrollPane imagemp = new JScrollPane(figura); // Cria painel de rolagem JSplitPane painels = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, imagemp, areap); // Define tamanho minimo para os componentes Dimension tamanhom = new Dimension(200,100); // Seta tamanho minimo area.setMinimumSize(tamanhom); figura.setMinimumSize(tamanhom); // Define painel como opaco painel.setOpaque(true); // Adiciona paineis painel.add(painels); return painel; } public static void criaGui() { // Cria formulario JFrame formulario = new JFrame("DA - Painel Deslizante"); formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Cria nova instancia e da classe Spliter spliter = new Spliter(); // Adiciona painel ao formulario formulario.setContentPane(spliter.criaPainel() ); // Define propriedades do formulario formulario.pack(); formulario.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // Exibe GUI na thread do swing criaGui(); } }); } }