[英]How to create a rollover button in swing
我有兩個按鈕
JButton playB = new JButton(new ImageIcon("res/playA.png"));
playB.setBorder(BorderFactory.createEmptyBorder());
playB.setContentAreaFilled(false);
JButton playA = new JButton(new ImageIcon("res/playA.png"));
playA.setBorder(BorderFactory.createEmptyBorder());
playA.setContentAreaFilled(false);
如何創建它,以便將鼠標移到按鈕A上時切換到按鈕B? 我能想到的就是使用鼠標偵聽器,但我想知道是否還有更好的方法。
如何創建它,以便將鼠標移到按鈕A上時切換到按鈕B? 我能想到的就是使用鼠標偵聽器,但我想知道是否還有更好的方法。
注意:setRolloverIcon方法不能用於此目的。
這個想法,用兩個JButton進行切換不是...,也不是使用MouseListener ,因為所有鼠標和鍵事件都在JButtons APi中實現,並且正確
將JButton.setRolloverIcon與ButtonModel中的事件一起使用 ,輸出應為兩個Swing Action,而不是在運行時添加的兩個JButton
以及ActionListener
。
例如
JButton.getModel().addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
ButtonModel model = (ButtonModel) e.getSource();
if (model.isRollover()) {
//doSomething
} else if (model.isPressed()) {
//doSomething
} // etc
}
});
編輯
再回來
如何創建它,以便將鼠標移到按鈕A上時切換到按鈕B? 我能想到的就是使用鼠標偵聽器,但我想知道是否還有更好的方法。
結論是,第一個JButton (button A)
不是,永遠不會在Mouse
或KeyEvent
的用戶端使用,因為這兩個事件都將(立即)轉換為roll_over
,
那么只有一種方法,可以從KeyBinding
s中以編程方式調用JButton.doClick()
,但是仍然存在問題,何時,如何以及為什么原因……使簡單的事情變得復雜
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.