如何设置JPanel固定大小,以便出现JScrollPane(滚动)?

时间:2014-07-27 19:07:24

标签: java swing jpanel jscrollpane preferredsize

我正在研究一些小代码。 JFrame包含具有特定维度的JPanel。这是我的代码:

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

public class ScrollPane extends JFrame { 

    public ScrollPane() {
        super("Title");
        setLayout(new BorderLayout());
        setSize(320,240);

        JScrollPane scroller = new JScrollPane(new DrawingPane()); 
        scroller.setPreferredSize(new Dimension(320,240)); 

        add(scroller); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    } 

    private class DrawingPane extends JPanel {
        public DrawingPane(){
            super();
            setSize(640,480);
            setMinimumSize(new Dimension(320,240));
        }

    }

    public static void main(String[] args) {
        new ScrollPane();
    } 
}

即使为JPanel设置了最小尺寸,也不会显示滚动条。

2 个答案:

答案 0 :(得分:4)

所有组件都负责确定首选大小,以便布局管理器可以正常工作。在进行自定义绘制时,您需要覆盖自定义组件的getPreferredSize()以返回组件的尺寸。

阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。

答案 1 :(得分:-1)

您还需要为绘图面板设置首选尺寸:

private class DrawingPane extends JPanel {
        public DrawingPane(){
            super();
            setPreferredSize(new Dimension(640,480));
            setMinimumSize(new Dimension(320,240));
        }

    }