JScrollPane + JPanel. Brak pasków przewijania.

0

Witam
Kombinuje jak umieścić Panel w JScrollPane (lub na odwrót) nie wiem co jest prawidłowe bo mam problemy z paskami.

Mam klasę MrsPane, na której umieszczam 100 wierszy różnego rodzaju kontrolek. Czy jest jakaś możliwość, aby uzyskać w poniższym panelu paski przewijania. W załączniku printscreen jak to wygląda na obecną chwilę.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package UserInterface.kontrolki;

import java.awt.Component;
import javax.swing.BoxLayout;
import javax.swing.JPanel;

/**
 *
 * @author widget
 */
public class MrsPanel extends JPanel {

    public MrsPanel() {
        super();
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    }

    public MrsPanel(int szerokosc, int wysokosc) {
        super();
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setSize(szerokosc, wysokosc);
    }
    
    public MrsPanel(int szerokosc, int wysokosc, boolean czyLayout) {
        super();
        if (czyLayout) {
            setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        } else {
            setLayout(null);
        }
        setSize(szerokosc, wysokosc);
    }
    int z_y = -19;

    public void dodajKontrolki(Component comp) {
        if (z_y < 0) {
            z_y = z_y + 20;
        } else {
            z_y = z_y + 30;
        }
        add(comp);
        comp.setLocation(1, z_y);
    }

    public void dodajKontrolki(Component[] comps) {
        if (z_y < 0) {
            z_y = z_y + 20;
        } else {
            z_y = z_y + 30;
        }
        int z_x = 1;
        for (int i = 0; i < comps.length; i++) {
            comps[i].setLocation(z_x, z_y);
            add(comps[i]);
            z_x = z_x + comps[i].getWidth();
        }
    }
}
 
0

pokaż kod jak dodajesz ten panel na Okno czy tam inny panel

0

W skrócie tak:

MrsPanel panel = new MrsPanel();
add(new JScrollPane(panel));
0

Sprawdziłem podany kod i u mnie są paski

 
    public static void main(String[] args) {
        MrsPanel panel = new MrsPanel();
        
        JFrame f = new JFrame("a");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        
        //f.add(new JScrollPane(panel)); //przed
        
        //po jednej
//        for (char i = 'a'; i < 'z'; i++) {
//            panel.dodajKontrolki(new JLabel(""+i));
//        }
        
        
        //tablice
        ArrayList<Component> list = new ArrayList(0);
        for (char i = 'a'; i < 'z'; i++) {
            list.add(new JLabel(""+i));
        } 
        panel.dodajKontrolki(list.toArray(new Component[0]));
        
        
        f.add(new JScrollPane(panel));//po
                
        f.pack();
        f.setVisible(true);
    }

musisz bardziej sprecyzować jak dodajesz kontrolki czy panel, bo może zależeć to od layout panelu/okna do którego dodajesz ten panel

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