任務:有一個大型應用程式,其中定期創建新的 jComponent。需要通過按住“Alt”鍵的滑鼠單擊它們來為所有這些添加處理。
很明顯,這需要使用 component.addMouseListener() 來完成。是否有一部分 JComponent 創建代碼可以插入我們的代碼?還是有其他方法可以解決問題?
我的代碼基于 Rjelinek 的建議:
public static void registrationMouseAction() {
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
@Override
public void eventDispatched(final AWTEvent event) {
if (event instanceof MouseEvent) {
MouseEvent mouseEvent = (MouseEvent) event;
if (mouseEvent.getID() == MOUSE_CLICKED) {
// # left prev
if (mouseEvent.getButton() == 4) {
new BackRecentDefinitionAction().performed();
}
// # right next
if (mouseEvent.getButton() == 5) {
new BackRecentDefinitionAction().performed();
}
// # view modal editor
if (mouseEvent.getButton() == 1 && mouseEvent.isAltDown()) {
new OpenModalEditorRadixObjectsAction().performed();
}
}
}
}
}, AWTEvent.MOUSE_EVENT_MASK);
}
更正:我需要對應用程式中的所有組件(例如,JButton、JPanel 等)進行“Alt MouseButton1”的處理。
uj5u.com熱心網友回復:
你的解決方案就在這行的某個地方。但是我必須說,在應用程式啟動時,它確實會在背景上單擊滑鼠,這可能需要解決
編輯
發布后,我意識到有人要求按下 alt 鍵,所以我添加了這個條件,它限制了啟動時的代碼垃圾郵件。但是它仍然不是最佳的
public class Main {
public static void main(String[] args) {
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTListener(), AWTEvent.MOUSE_EVENT_MASK);
//your code
}
private static class AWTListener implements AWTEventListener{
@Override
public void eventDispatched(AWTEvent event) {
if (event instanceof MouseEvent evt && evt.isAltDown()) {
//your mouse event code
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511843.html
標籤:爪哇摇摆用户界面
上一篇:Java-Swing-使用用戶輸入更新JTable,JTable不可見
下一篇:我在Jpanel上使用Jbuttons并在Jlist上添加這個jpanel。我在串列中使用addMouseListener。無法點擊Jpanel上的按鈕
