2014-05-14 14 views
0

我創建了一個名爲ImagePanel的自定義JPanel類。我重寫像這樣的paintComponent方法...使用JScrollPane和JPanel(自定義)滾動某個矩形的簡單方法

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    g.drawImage(image, 0,0, null); 

} 

自定義面板的目的是簡單地繪製圖像。

在我的JFrame中,我創建了一個添加到JFrame中的ScollPane。當我創建滾動窗格不過,我通過我的imagePanel,像這樣的情況下...

ip = new ImagePanel(); 
JScrollPane jsp = new JScrollPane(ip); 
this.add(jsp); 

現在我想作爲一個易於使用的使用滾動條來過我的形象滾動的方式。現在圖像非常大,滾動條不顯示。我使用該策略使其可見,但滾動條的句柄不在那裏。

有沒有人知道一個簡單的方法來做到這一點?

回答

1

試用JPanel#setPreferredSize(),如果需要,將強制JScrollPane顯示滾動條。

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    g.drawImage(image, 0,0, null); 
    // set the size of the panel based on image size 
    setPreferredSize(new Dimension(image.getWidth(), image.getHeight())); 
} 

編輯

設置setPreferredSize()內覆蓋paintComponent()不是一個好辦法。

您可以使用JLabel通過@mKorbel的建議更簡單的方式做到這一點。欲瞭解更多信息,請看下面的評論。

BufferedImage image = ... 
JLabel label = new JLabel(new ImageIcon(image)); // set the icon 

JScrollPane jsp = new JScrollPane(label); 

截圖:

enter image description here

+0

那先生是完全正確的!謝謝! – Matthew

+0

你最歡迎。 – Braj

+1

永不設置setPreferredSize(new Dimension(image.getWidth(),image.getHeight()));裏面重複啓動paintComponent,重寫getPreferredSize JPanel,作爲一邊使用JLabel.setIcon作簡單作業 – mKorbel

相關問題