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ź.
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ź.
Próbowałeś dodać to w ten sposób:
JScrollPane scrollPane = new JScrollPane(nazwa twojego pannelu);
add(scrollPane); //Okno glowne
Do JPanel dodaj JScrollPane, a JTextField'y do JScrollPane
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();
}
}
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);
Suwak pojawi się gdy będzie potrzebny, jeśli chcesz by suwak był zawsze, to:
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
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);
}
}