日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java取消按钮_Java Swing-单击取消按钮时不循环

發布時間:2023/12/15 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java取消按钮_Java Swing-单击取消按钮时不循环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小編典典

在我最近從事的項目中,我實現了一個基于事件的解決方案。這個想法是JDialog通知其父級JFrame登錄過程如何進行的,而最后一個登錄名可能會也可能不會繼續執行。這樣,我就沒有循環并保持各自的職責:模式將是這樣的:

LoginEvent:這是事件本身。沒那么復雜:

class LoginEvent extends EventObject {

public static final int LOGIN_SUCCEEDED = 0;

public static final int LOGIN_FAILED = 1;

public static final int LOGIN_DIALOG_CLOSED = 2;

private int id;

public LoginEvent(Object source, int id) {

super(source);

this.id = id;

}

public int getId() {

return id;

}

}

LoginListener

處理這些LoginEvents的接口:

public interface LoginListener extends EventListener {

public void handleLoginEvent(LoginEvent evt);

}

登錄對話框

此類必須List訂閱一個LoginListeners:

class LoginDialog {

List listeners = new ArrayList<>();

JDialog dialog;

JButton accept;

JButton cancel;

public void show() {

//create and show GUI components

}

public void close() {

if(dialog != null) {

dialog.dispose();

}

}

...

public void addLoginListener(LoginListener loginEventListener) {

if(!listeners.contains(loginEventListener)) {

listeners.add(loginEventListener);

}

}

public void removeLoginListener(LoginListener loginEventListener) {

listeners.remove(loginEventListener);

}

public void dispatchLoginEvent(LoginEvent evt) {

for(LoginListener loginListener: listeners) {

loginListener.handleLoginEvent(evt);

}

}

}

將動作偵聽器添加到accept和cancel按鈕:

accept.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// validate login data

if(loginValid) {

dispatchLoginEvent(new LoginEvent(dialog, LoginEvent.LOGIN_SUCCEEDED));

} else {

dispatchLoginEvent(new LoginEvent(dialog, LoginEvent.LOGIN_FAILED));

}

}

});

cancel.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

dispatchLoginEvent(new LoginEvent(dialog, LoginEvent.LOGIN_DIALOG_CLOSED));

}

});

訂閱LoginListener

在您的JFrame:

final LoginDialog dialog = new LoginDialog();

dialog.addLoginListener(new LoginListener() {

@Override

public void handleLoginEvent(LoginEvent evt) {

if(evt.getId() == LoginEvent.LOGIN_SUCCEEDED {

dialog.close();

//continue execution

return;

}

if(evt.getId() == LoginEvent.LOGIN_FAILED) {

JOptionPane.showMessageDialog(null, "Login failed!");

return;

}

if(evt.getId() == LoginEvent.CLOSE_LOGIN_DIALOG) {

dialog.close();

// do something when this dialog is closed

}

}

};

dialog.show();

2020-10-17

總結

以上是生活随笔為你收集整理的java取消按钮_Java Swing-单击取消按钮时不循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。