2011-02-11 71 views
3

在Java中,當您將鼠標懸停在單個按鈕上時,是否可以讓程序認爲您在多個按鈕上懸停? 我正在使用帶按鈕的多維數組,並希望能夠一次將5個按鈕懸停。 (實際懸停附近的所有按鈕)。將鼠標懸停在Java中的多個按鈕上?

有關如何做到這一點的任何想法?

注:我沒有使用JButtons,只是普通的按鈕。 (awt.Button)

編輯 我顯然不夠清楚,我對此表示歉意。 下面是截圖什麼我在尋找:

Hover

所以,將光標懸停在最初的灰度空間,所有的空間的旁邊有不同的背景,但是,他們不被視爲被盤旋,如果我需要的話。

+1

所以你的意思是「在擺動」,對吧? – 2011-02-11 04:50:37

+1

呃,Swing會不會使用JButton? – 2011-02-11 04:55:37

回答

3

假設您使用的是MouseListener,則在主按鈕上調用mouseEntered(MouseEvent e)方法時,顯式調用所有其他按鈕的所有偵聽器上的相同方法,傳遞給定的事件。同上mouseExited(MouseEvent e)方法。

維護從主按鈕到從屬按鈕的引用由您決定。

從屬按鈕的偵聽器將收到引用主按鈕的事件。如果需要,可以通過參考他們所連接的按鈕來創建監聽器,以便您可以在接收事件時使用該按鈕進行操作。

編輯:

這是我談論的那種事情。它有幫助嗎?

final List<Button> subordinateButtons = Arrays.asList(new Button(), new Button(), new Button()); 
Button myButton = new Button(); 
myButton.addMouseListener(new MouseListener() { 

    public void mouseEntered(MouseEvent e) { 
     for (Button subordinateButton : subordinateButtons) { 
      subordinateButton.setBackground(Color.GRAY); 
     } 
    } 

    public void mouseExited(MouseEvent e) { 
     for (Button subordinateButton : subordinateButtons) { 
      subordinateButton.setBackground(Color.LIGHT_GRAY); 
     } 
    } 

    public void mouseClicked(MouseEvent e) { 
    } 

    public void mousePressed(MouseEvent e) { 
    } 

    public void mouseReleased(MouseEvent e) { 
    } 

}); 

沒有理由爲什麼你不能保持從MouseListenerList<Button>參考。如果監聽者的工作是在這些按鈕上工作,那麼設計你的類就可以實現。

相關問題