पर इसका उपयोग करते समय प्रकट नहीं होता है, मैं इस मुद्दे को हल करने के लिए एक रास्ता खोजने के लिए घंटों तक प्रयास कर रहा हूं, लेकिन मुझे इसके साथ कोई भाग्य नहीं था। यहां एक नमूना कोड है:JSCrollPane किसी JPanel
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class Example extends JFrame
{
private static final long serialVersionUID = 1L;
public Example()
{
JPanel contentPane = (JPanel) getContentPane();
contentPane.setLayout(new BorderLayout());
JPanel panTop = new JPanel(new BorderLayout());
//JPanel panBottom = new JPanel(new BorderLayout());
JPanel panTopCenter = new JPanel();
//JPanel panTopLeft = new JPanel();
//JPanel panTopRight = new JPanel();
panTop.add(panTopCenter, BorderLayout.CENTER);
//panTop.add(panTopLeft, BorderLayout.WEST);
//panTop.add(panTopRight, BorderLayout.EAST);
contentPane.add(panTop, BorderLayout.CENTER);
//contentPane.add(panBottom, BorderLayout.SOUTH);
JPanel pan = new JPanel();
pan.setLayout(new BoxLayout(pan, BoxLayout.Y_AXIS));
for(int i = 0; i < 50; i++) pan.add(new JButton("Button " + i));
JScrollPane scrollPane = new JScrollPane(pan);
panTopCenter.add(scrollPane);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new Example();
}
});
}
}
स्नैपशॉट:
'BoxLayout' का उपयोग करने के बजाय, 'ग्रिडलाउट' का प्रयास करें, जैसा कि इस [उदाहरण] में दिखाया गया है (http://stackoverflow.com/questions/10331129/jscrollpane-resize-containing-jpanel-when-scrollbars-appear/ 10333957 # 10333957), चूंकि 'ग्रिडलाउट' में सभी 'जेबटन' बराबर आकार के होंगे, 'बॉक्सलेआउट' के विपरीत, जहां आकार इसके अंदर के पाठ द्वारा निर्धारित किया जाता है। –