2013-02-10 71 views
0

我有一個Pad_Draw類擴展JComponent。構造函數是像JComponent繪圖板的繪圖

public Pad_Draw() 
{ 
     this.setDoubleBuffered(true); 
     this.setLayout(null); 
}; 

的的paintComponent methpod是:

public void paintComponent(Graphics g) 
{ 
     graphics2D = (Graphics2D)g; 
     graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
     graphics2D.setPaint(Color.white); 
     graphics2D.fillRect(0, 0, getSize().width, getSize().height); 
} 

JFrame我被一個ScrollPane添加此:

JScrollPane Padscroller = new JScrollPane(); 
    Padscroller.setWheelScrollingEnabled(true); 
    Padscroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    Padscroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 
    Padscroller.setPreferredSize(new Dimension(200, 100)); 
    Padscroller.setMinimumSize(new Dimension(200, 100)); 
    Padscroller.setMaximumSize(new Dimension(200, 100)); 
    Padscroller.setViewportView(drawPad); 
    content.add(Padscroller, BorderLayout.CENTER); 

但只要我在幀中添加內容並設置框架的大小。無論它需要什麼,繪圖板都會佔用整個尺寸。

我希望我的指定大小(200,100)得到維護,我真的想要像Windows Paint應用程序一樣。我應該可以通過延長角度來增加尺寸。只要我延長角落,滾動條就會被激活。任何人都可以給我任何想法如何實現它?

回答

2

JFrame,BorderLayout的默認佈局管理器不考慮其組件的首選大小。

你可以佈局管理器,做,如BoxLayout,並重寫的getPreferredSize您Padscroller組件:

JScrollPane padScroller = new JScrollPane() { 
    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(200, 100); 
    } 
}; 

關於增加大小,看看在mouseDragged使用MouseAdapter和更新該屬性方法。

+0

但我設計了BorderFrame的JFrame。那麼記住BorderLayout的任何解決方案? BoxLayout的實施對我來說會有點困難。 – 2013-02-11 09:54:31