我正在研究一些小代码。 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
设置了最小尺寸,也不会显示滚动条。
答案 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));
}
}