我正在创建电路编辑器(类似于任何具有基本菜单和具有可指定尺寸的画布的常规绘画软件)。我目前正试图将以前不可滚动的画布(JPanel
)转换为可滚动画布。在JFrame中居中固定大小的画布
此刻的明显的设计错误是,当滚动条看上去以正确反映画布的内部尺寸(这当然可以比JFrame
方式更大),由于帆布JPanel
感在主面板的BorderLayout
的CENTER
中增加,它总是随着JFrame
一起调整大小。
public final class MainFrame extends JFrame
{
public MainFrame()
{
JPanel menuPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
// Populate Menu Panel
// ...
JPanel canvasPanel = new JPanel();
canvasPanel.setBackground(Color.white);
Dimension canvasDims = new Dimension(800,600);
canvasPanel.setPreferredSize(canvasDims);
canvasPanel.setMinimumSize(canvasDims);
canvasPanel.setMaximumSize(canvasDims);
JScrollPane canvasScrollPane = new JScrollPane(
canvasPanel,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
JPanel masterPanel = new JPanel(new BorderLayout());
masterPanel.add(menuPanel, BorderLayout.NORTH);
masterPanel.add(canvasScrollPane, BorderLayout.CENTER);
setContentPane(masterPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1200, 700);
setMinimumSize(new Dimension(500, 500));
setLocationRelativeTo(null);
setVisible(true);
}
我读过关于中心JPanels和滚动条相当多的职位,但既复杂性加在一起,因为我还没有找到一个解决办法的事情可能会有点复杂。
我真正想要实现的是将画布“JPanel
”固定为用户可能指定并居中在中间的任意大小,以及滚动条的行为与人们期望的那样:
你怎么会去这样做/固定我的设计?任何帮助将不胜感激!
P.S.新年快乐:)
工作很好!非常感谢! –