我正在創建電路編輯器(類似於任何具有基本菜單和具有可指定尺寸的畫布的常規繪畫軟件)。我目前正試圖將以前不可滾動的畫布(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.新年快樂:)
工作很好!非常感謝! –