2015-05-04 37 views
1

MouseListeners getX()和getY()返回鼠標光標的位置,但由於我在scrollpane中有一個非常大的圖像,我只獲取圖像當前可見部分的位置。無論如何要得到圖像的像素座標? 下面是當前的代碼:MouseListener在大幀上的位置Java

JScrollPane scrollPane = new JScrollPane(new JLabel(new ImageIcon(Image))); 
scrollPane.addMouseListener(new MouseAdapter() { 
    @Override 
    public void mousePressed(MouseEvent e) { 
     mx1 = e.getX(); 
     my1 = e.getY(); 
    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 
     mx2 = e.getX(); 
     my2 = e.getY(); 
    } 
} 
+1

嘗試將鼠標監聽器添加到JLabel而不是JScrollPane。 –

+0

謝謝,這個工作很好的免除了,因爲窗口可以調整大小,標籤可以比其中的圖像大,但我認爲我可以自己處理。 @SteveChaloner – Alex

回答

0

您可以通過scrollPane.getViewport().getViewRect()可以訪問可見在JScrollPane一部分。它返回一個Rectangle對象,您可以在其中找到滾動的可見部分的位置及其大小。

就你所說的,你只需要添加監聽器到標籤本身。

0

爲此使用AdjustmentListener。檢查方法addAdjustmentListenerJScrollBarin the docs