Problem z przewijaniem za pomocą JScrollPane

0

Witam,
mam taki problem.
Mam JPanel do którego są dokładane dynamicznie JTextField.
setLayout jest ustawiony na null.
Chodzi mi o to żeby po dodaniu 10 JTextField powstawał pasek z boku do skrolowania.

Z góry dziękuje za podpowiedź.

0

Próbowałeś dodać to w ten sposób:

 
JScrollPane scrollPane = new JScrollPane(nazwa twojego pannelu); 
add(scrollPane); //Okno glowne
0

Do JPanel dodaj JScrollPane, a JTextField'y do JScrollPane

0

Niestety w dalszym ciągu nie działa.

import javax.swing.*;

public class Test extends JFrame{

/**
 * 
 */
private static final long serialVersionUID = 1L;

public Test(){
	//ustawienia poczatkowe
	setTitle("AAAA");
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setResizable(true);
	setSize(400, 400);
	setLayout(null);
	
	//utworzenie i dodanie panelu do JFrame
	JPanel panel=new JPanel();
	panel.setLayout(null);
	panel.setBounds(0, 0, 400, 400);
	//panel.setBorder(BorderFactory.createTitledBorder("GENERAL"));
	JButton jb1=new JButton("B1");
	jb1.setBounds(20, 20, 100, 20);
	JButton jb2=new JButton("B2");
	jb2.setBounds(20, 60, 100, 20);
	JButton jb3=new JButton("B3");
	jb3.setBounds(20, 100, 100, 20);
	JButton jb4=new JButton("B4");
	jb4.setBounds(20, 140, 100, 20);
	JButton jb5=new JButton("B5");
	jb5.setBounds(20, 180, 100, 20);
	JButton jb6=new JButton("B6");
	jb6.setBounds(20, 220, 100, 20);
	JButton jb7=new JButton("B7");
	jb7.setBounds(20, 260, 100, 20);
	JButton jb8=new JButton("B8");
	jb8.setBounds(20, 300, 100, 20);
	JButton jb9=new JButton("B9");
	jb9.setBounds(20, 340, 100, 20);
	JButton jb10=new JButton("B10");
	jb10.setBounds(20, 380, 100, 20);
	JScrollPane jsp=new JScrollPane(panel);
	jsp.add(jb1);
	jsp.add(jb2);
	jsp.add(jb3);
	jsp.add(jb4);
	jsp.add(jb5);
	jsp.add(jb6);
	jsp.add(jb7);
	jsp.add(jb8);
	jsp.add(jb9);
	jsp.add(jb10);
	add(jsp);
	
}

public static void main(String[] args) {
	Test t=new Test();
	t.setVisible(true);
	//t.pack();
}

}

0

Nigdy nie stosowałem połączenia JScrollPane i setLayout(null) więc nie wiem czy zadziała. Powinno być tak:

        panel.add(jb1);
          ... 
        panel.add(jb10);
        JScrollPane jsp=new JScrollPane(panel);
        add(jsp);
0

Suwak pojawi się gdy będzie potrzebny, jeśli chcesz by suwak był zawsze, to:

  jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
0

JScrollPanel i ręczne rozmieszczanie komponentów "nie lubią" się.

import javax.swing.*;
import java.awt.*;

public class Test extends JFrame{

        /**
         *
         */
        private static final long serialVersionUID = 1L;

        public Test(){
                //ustawienia poczatkowe
                setTitle("AAAA");
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                setResizable(true);
                //setSize(400, 400);
                //setLayout(null);

                //utworzenie i dodanie panelu do JFrame
                JPanel panel=new JPanel();
                panel.setLayout(new GridLayout(20,1,5,5));
                //panel.setBounds(0, 0, 400, 400);
                for(int i=1;i<=20;i++)
                {
                    panel.add(new JButton("B"+i));
                }
                JScrollPane jsp=new JScrollPane(panel);
                add(jsp);
                pack();

        }

        public static void main(String[] args) {
                Test t=new Test();
                t.setVisible(true);
        }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1