|
|
|
@ -9,11 +9,9 @@ import com.fr.design.gui.ipasswordfield.UIPassWordField;
|
|
|
|
|
import com.fr.design.gui.itextfield.UITextField; |
|
|
|
|
import com.fr.design.layout.FRGUIPaneFactory; |
|
|
|
|
import com.fr.design.utils.gui.GUICoreUtils; |
|
|
|
|
import com.fr.general.ComparatorUtils; |
|
|
|
|
import com.fr.general.FRFont; |
|
|
|
|
import com.fr.general.FRLogger; |
|
|
|
|
import com.fr.general.Inter; |
|
|
|
|
import com.fr.general.*; |
|
|
|
|
import com.fr.general.http.HttpClient; |
|
|
|
|
import com.fr.stable.EncodeConstants; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
@ -24,8 +22,10 @@ import java.awt.event.ActionListener;
|
|
|
|
|
import java.awt.event.KeyAdapter; |
|
|
|
|
import java.awt.event.KeyEvent; |
|
|
|
|
import java.awt.event.KeyListener; |
|
|
|
|
import java.io.UnsupportedEncodingException; |
|
|
|
|
import java.net.HttpURLConnection; |
|
|
|
|
import java.net.URI; |
|
|
|
|
import java.net.URLEncoder; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author richie |
|
|
|
@ -36,12 +36,8 @@ public class BBSLoginDialog extends UIDialog {
|
|
|
|
|
|
|
|
|
|
private static final int DIALOG_WIDTH = 400; |
|
|
|
|
private static final int DIALOG_HEIGHT = 200; |
|
|
|
|
private static final String URL = "http://bbs.finereport.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"; |
|
|
|
|
private static final String PASSWORD_RESET_URL = "http://bbs.finereport.com/portal.php?mod=topic&topicid=2"; |
|
|
|
|
private static final String REGISTER_URL = "http://bbs.finereport.com/member.php?mod=register"; |
|
|
|
|
private static final String LOGIN_SUCCESS_FLAG = "http://bbs.finereport.com"; |
|
|
|
|
private static final Font DEFAULT_FONT = FRFont.getInstance(FRFont.DEFAULT_FONTNAME, 0, 14); |
|
|
|
|
private static final String TEST_CONNECTION_URL = "http://bbs.finereport.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1&username=test&password=123456"; |
|
|
|
|
private static final int TIME_OUT = 10000; |
|
|
|
|
|
|
|
|
|
private static final int BUTTON_WIDTH = 90; |
|
|
|
@ -56,68 +52,69 @@ public class BBSLoginDialog extends UIDialog {
|
|
|
|
|
private UILabel userLabel; |
|
|
|
|
private UILabel passLabel; |
|
|
|
|
private UITextField nameField; |
|
|
|
|
private UIPassWordField passField; |
|
|
|
|
private UIPassWordField passField; |
|
|
|
|
private UIButton loginButton; |
|
|
|
|
private UILabel tipLabel; |
|
|
|
|
private BoxCenterAligmentPane passwordReset; |
|
|
|
|
private BoxCenterAligmentPane registerLabel; |
|
|
|
|
|
|
|
|
|
private KeyListener keyListener = new KeyAdapter() { |
|
|
|
|
public void keyPressed(KeyEvent e){ |
|
|
|
|
int code = e.getKeyCode(); |
|
|
|
|
if(KeyEvent.VK_ESCAPE == code){ |
|
|
|
|
BBSLoginDialog.this.setVisible(false); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(KeyEvent.VK_ENTER == code){ |
|
|
|
|
login(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
public void keyPressed(KeyEvent e) { |
|
|
|
|
int code = e.getKeyCode(); |
|
|
|
|
if (KeyEvent.VK_ESCAPE == code) { |
|
|
|
|
BBSLoginDialog.this.setVisible(false); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (KeyEvent.VK_ENTER == code) { |
|
|
|
|
login(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// 用户登录状态label
|
|
|
|
|
private UserInfoLabel userInfoLabel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public UILabel getTipLabel() { |
|
|
|
|
return tipLabel; |
|
|
|
|
} |
|
|
|
|
public UILabel getTipLabel() { |
|
|
|
|
return tipLabel; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setTipLabel(UILabel tipLabel) { |
|
|
|
|
this.tipLabel = tipLabel; |
|
|
|
|
} |
|
|
|
|
public void setTipLabel(UILabel tipLabel) { |
|
|
|
|
this.tipLabel = tipLabel; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 构造函数 |
|
|
|
|
* @param parent 父窗口 |
|
|
|
|
* @param userInfoLabel 登录状态label |
|
|
|
|
*/ |
|
|
|
|
public BBSLoginDialog(Frame parent,UserInfoLabel userInfoLabel) { |
|
|
|
|
/** |
|
|
|
|
* 构造函数 |
|
|
|
|
* |
|
|
|
|
* @param parent 父窗口 |
|
|
|
|
* @param userInfoLabel 登录状态label |
|
|
|
|
*/ |
|
|
|
|
public BBSLoginDialog(Frame parent, UserInfoLabel userInfoLabel) { |
|
|
|
|
super(parent); |
|
|
|
|
JPanel panel = (JPanel) getContentPane(); |
|
|
|
|
initComponents(panel); |
|
|
|
|
this.userInfoLabel = userInfoLabel; |
|
|
|
|
setSize(new Dimension(DIALOG_WIDTH,DIALOG_HEIGHT)); |
|
|
|
|
setSize(new Dimension(DIALOG_WIDTH, DIALOG_HEIGHT)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void initComponents(JPanel contentPane) { |
|
|
|
|
this.setTitle(Inter.getLocText("FR-Designer-BBSLogin_Login-Title")); |
|
|
|
|
tipLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Login-Failure-Tip")); |
|
|
|
|
userLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Account")+":"); |
|
|
|
|
passLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Password")+":"); |
|
|
|
|
userLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Account") + ":"); |
|
|
|
|
passLabel = new UILabel(Inter.getLocText("FR-Designer-BBSLogin_Password") + ":"); |
|
|
|
|
nameField = new UITextField(); |
|
|
|
|
passField = new UIPassWordField(); |
|
|
|
|
loginButton = new UIButton(Inter.getLocText("FR-Designer-BBSLogin_Login")); |
|
|
|
|
passwordReset = getURLActionLabel(PASSWORD_RESET_URL); |
|
|
|
|
registerLabel = getURLActionLabel(REGISTER_URL); |
|
|
|
|
passwordReset = getURLActionLabel(SiteCenter.getInstance().acquireUrlByKind("bbs.reset")); |
|
|
|
|
registerLabel = getURLActionLabel(SiteCenter.getInstance().acquireUrlByKind("bbs.register")); |
|
|
|
|
loginButton.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent arg0) { |
|
|
|
|
login(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent arg0) { |
|
|
|
|
login(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
nameField.addKeyListener(keyListener); |
|
|
|
|
passField.addKeyListener(keyListener); |
|
|
|
@ -130,7 +127,7 @@ public class BBSLoginDialog extends UIDialog {
|
|
|
|
|
contentPane.setLayout(new BorderLayout()); |
|
|
|
|
|
|
|
|
|
JPanel mainPane = new JPanel(); |
|
|
|
|
mainPane.setLayout(new BorderLayout(0,V_GAP)); |
|
|
|
|
mainPane.setLayout(new BorderLayout(0, V_GAP)); |
|
|
|
|
|
|
|
|
|
initNorthPane(mainPane); |
|
|
|
|
|
|
|
|
@ -138,130 +135,130 @@ public class BBSLoginDialog extends UIDialog {
|
|
|
|
|
|
|
|
|
|
initSouthPane(mainPane); |
|
|
|
|
|
|
|
|
|
contentPane.add(mainPane,BorderLayout.NORTH); |
|
|
|
|
contentPane.add(mainPane, BorderLayout.NORTH); |
|
|
|
|
|
|
|
|
|
this.setResizable(false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void login(){ |
|
|
|
|
if(nameField.getText().isEmpty()){ |
|
|
|
|
tipForUsernameEmpty(); |
|
|
|
|
nameField.requestFocus(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if(String.valueOf(passField.getPassword()).isEmpty()){ |
|
|
|
|
tipForPasswordEmpty(); |
|
|
|
|
passField.requestFocus(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if(!testConnection()){ |
|
|
|
|
connectionFailue(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if(login(nameField.getText(),String.valueOf(passField.getPassword()))){ |
|
|
|
|
loginSuccess(); |
|
|
|
|
}else{ |
|
|
|
|
loginFailure(); |
|
|
|
|
} |
|
|
|
|
private void login() { |
|
|
|
|
if (nameField.getText().isEmpty()) { |
|
|
|
|
tipForUsernameEmpty(); |
|
|
|
|
nameField.requestFocus(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (String.valueOf(passField.getPassword()).isEmpty()) { |
|
|
|
|
tipForPasswordEmpty(); |
|
|
|
|
passField.requestFocus(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (!testConnection()) { |
|
|
|
|
connectionFailue(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (login(nameField.getText(), String.valueOf(passField.getPassword()))) { |
|
|
|
|
loginSuccess(); |
|
|
|
|
} else { |
|
|
|
|
loginFailure(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean testConnection(){ |
|
|
|
|
HttpClient client = new HttpClient(TEST_CONNECTION_URL); |
|
|
|
|
return client.isServerAlive(); |
|
|
|
|
private boolean testConnection() { |
|
|
|
|
HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test")); |
|
|
|
|
return client.isServerAlive(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void initNorthPane(JPanel mainPane){ |
|
|
|
|
private void initNorthPane(JPanel mainPane) { |
|
|
|
|
JPanel northPane = new JPanel(); |
|
|
|
|
northPane.setPreferredSize(new Dimension(DIALOG_WIDTH,NORTH_PANE_HEIGHT)); |
|
|
|
|
northPane.setPreferredSize(new Dimension(DIALOG_WIDTH, NORTH_PANE_HEIGHT)); |
|
|
|
|
northPane.add(tipLabel); |
|
|
|
|
mainPane.add(northPane,BorderLayout.NORTH); |
|
|
|
|
mainPane.add(northPane, BorderLayout.NORTH); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void initCenterPane(JPanel mainPane){ |
|
|
|
|
private void initCenterPane(JPanel mainPane) { |
|
|
|
|
JPanel loginPane = new JPanel(); |
|
|
|
|
loginPane.setLayout(new GridLayout(2,1,0,V_GAP)); |
|
|
|
|
loginPane.setLayout(new GridLayout(2, 1, 0, V_GAP)); |
|
|
|
|
|
|
|
|
|
JPanel namePane = new JPanel(); |
|
|
|
|
namePane.setLayout(new FlowLayout(FlowLayout.RIGHT,FLOWLAYOUT_H_GAP,0)); |
|
|
|
|
namePane.setLayout(new FlowLayout(FlowLayout.RIGHT, FLOWLAYOUT_H_GAP, 0)); |
|
|
|
|
namePane.add(userLabel); |
|
|
|
|
nameField.setPreferredSize(new Dimension(FIELD_WIDTH,FIELD_HEIGHT)); |
|
|
|
|
nameField.setPreferredSize(new Dimension(FIELD_WIDTH, FIELD_HEIGHT)); |
|
|
|
|
namePane.add(nameField); |
|
|
|
|
namePane.add(passwordReset); |
|
|
|
|
loginPane.add(namePane); |
|
|
|
|
|
|
|
|
|
JPanel passPane = new JPanel(); |
|
|
|
|
passPane.setLayout(new FlowLayout(FlowLayout.RIGHT,FLOWLAYOUT_H_GAP,0)); |
|
|
|
|
passPane.setLayout(new FlowLayout(FlowLayout.RIGHT, FLOWLAYOUT_H_GAP, 0)); |
|
|
|
|
passPane.add(passLabel); |
|
|
|
|
passPane.add(passField); |
|
|
|
|
passField.setPreferredSize(new Dimension(FIELD_WIDTH,FIELD_HEIGHT)); |
|
|
|
|
passField.setPreferredSize(new Dimension(FIELD_WIDTH, FIELD_HEIGHT)); |
|
|
|
|
passPane.add(registerLabel); |
|
|
|
|
loginPane.add(passPane); |
|
|
|
|
|
|
|
|
|
mainPane.add(loginPane,BorderLayout.CENTER); |
|
|
|
|
mainPane.add(loginPane, BorderLayout.CENTER); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void initSouthPane(JPanel mainPane){ |
|
|
|
|
private void initSouthPane(JPanel mainPane) { |
|
|
|
|
JPanel southPane = new JPanel(); |
|
|
|
|
southPane.setLayout(new FlowLayout(FlowLayout.RIGHT,BUTTON_H_GAP,0)); |
|
|
|
|
loginButton.setPreferredSize(new Dimension(BUTTON_WIDTH,FIELD_HEIGHT)); |
|
|
|
|
southPane.setLayout(new FlowLayout(FlowLayout.RIGHT, BUTTON_H_GAP, 0)); |
|
|
|
|
loginButton.setPreferredSize(new Dimension(BUTTON_WIDTH, FIELD_HEIGHT)); |
|
|
|
|
loginButton.setFont(DEFAULT_FONT); |
|
|
|
|
southPane.add(loginButton); |
|
|
|
|
mainPane.add(southPane,BorderLayout.SOUTH); |
|
|
|
|
mainPane.add(southPane, BorderLayout.SOUTH); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 登录成功
|
|
|
|
|
private void loginSuccess(){ |
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSPassword(String.valueOf(passField.getPassword())); |
|
|
|
|
userInfoLabel.setUserName(nameField.getText()); |
|
|
|
|
userInfoLabel.getUserInfoPane().markSignIn(nameField.getText()); |
|
|
|
|
userInfoLabel.getUserInfoPane().getSwitchAccountLabel().setVisible(true); |
|
|
|
|
BBSLoginDialog.this.setVisible(false); |
|
|
|
|
private void loginSuccess() { |
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSPassword(String.valueOf(passField.getPassword())); |
|
|
|
|
userInfoLabel.setUserName(nameField.getText()); |
|
|
|
|
userInfoLabel.getUserInfoPane().markSignIn(nameField.getText()); |
|
|
|
|
userInfoLabel.getUserInfoPane().getSwitchAccountLabel().setVisible(true); |
|
|
|
|
BBSLoginDialog.this.setVisible(false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 登录失败
|
|
|
|
|
private void loginFailure(){ |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Login-Failure-Tip")); |
|
|
|
|
private void loginFailure() { |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Login-Failure-Tip")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void tipForUsernameEmpty(){ |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Username-Empty-Tip")); |
|
|
|
|
private void tipForUsernameEmpty() { |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Username-Empty-Tip")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void showTipForDownloadPluginWithoutLogin() { |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Download-Unlogin-Tip")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void tipForPasswordEmpty(){ |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Password-Empty-Tip")); |
|
|
|
|
private void tipForPasswordEmpty() { |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Password-Empty-Tip")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setLoginFailureTxt(String errorTxt){ |
|
|
|
|
tipLabel.setText(errorTxt); |
|
|
|
|
tipLabel.setForeground(Color.RED); |
|
|
|
|
tipLabel.repaint(); |
|
|
|
|
tipLabel.setVisible(true); |
|
|
|
|
private void setLoginFailureTxt(String errorTxt) { |
|
|
|
|
tipLabel.setText(errorTxt); |
|
|
|
|
tipLabel.setForeground(Color.RED); |
|
|
|
|
tipLabel.repaint(); |
|
|
|
|
tipLabel.setVisible(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 连接失败
|
|
|
|
|
private void connectionFailue(){ |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Connection-Failure")); |
|
|
|
|
private void connectionFailue() { |
|
|
|
|
setLoginFailureTxt(Inter.getLocText("FR-Designer-BBSLogin_Connection-Failure")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 清楚登录信息 |
|
|
|
|
*/ |
|
|
|
|
public void clearLoginInformation(){ |
|
|
|
|
tipLabel.setText(StringUtils.EMPTY); |
|
|
|
|
nameField.setText(StringUtils.EMPTY); |
|
|
|
|
passField.setText(StringUtils.EMPTY); |
|
|
|
|
public void clearLoginInformation() { |
|
|
|
|
tipLabel.setText(StringUtils.EMPTY); |
|
|
|
|
nameField.setText(StringUtils.EMPTY); |
|
|
|
|
passField.setText(StringUtils.EMPTY); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
/** |
|
|
|
|
* 显示登录窗口 |
|
|
|
|
*/ |
|
|
|
|
public void showWindow(){ |
|
|
|
|
public void showWindow() { |
|
|
|
|
GUICoreUtils.centerWindow(this); |
|
|
|
|
setVisible(true); |
|
|
|
|
} |
|
|
|
@ -276,36 +273,42 @@ public class BBSLoginDialog extends UIDialog {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 是否登陆成功 |
|
|
|
|
* |
|
|
|
|
* @param username 用户名 |
|
|
|
|
* @param password 密码 |
|
|
|
|
* @return 同上 |
|
|
|
|
*/ |
|
|
|
|
public static boolean login(String username,String password){ |
|
|
|
|
String url = URL + "&username=" + username + "&password=" + password; |
|
|
|
|
HttpClient client = new HttpClient(url); |
|
|
|
|
client.setTimeout(TIME_OUT); |
|
|
|
|
if(client.getResponseCodeNoException() == HttpURLConnection.HTTP_OK){ |
|
|
|
|
try { |
|
|
|
|
String res = client.getResponseText("GBK"); |
|
|
|
|
if(res.contains(LOGIN_SUCCESS_FLAG)){ |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
FRLogger.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
public static boolean login(String username, String password) { |
|
|
|
|
try { |
|
|
|
|
username = URLEncoder.encode(username, EncodeConstants.ENCODING_GBK); |
|
|
|
|
} catch (UnsupportedEncodingException e) { |
|
|
|
|
FRLogger.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
String url = SiteCenter.getInstance().acquireUrlByKind("bbs.login") + "&username=" + username + "&password=" + password; |
|
|
|
|
HttpClient client = new HttpClient(url); |
|
|
|
|
client.setTimeout(TIME_OUT); |
|
|
|
|
if (client.getResponseCodeNoException() == HttpURLConnection.HTTP_OK) { |
|
|
|
|
try { |
|
|
|
|
String res = client.getResponseText(EncodeConstants.ENCODING_GBK); |
|
|
|
|
if (res.contains(LOGIN_SUCCESS_FLAG)) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
FRLogger.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private BoxCenterAligmentPane getURLActionLabel(final String url){ |
|
|
|
|
ActionLabel actionLabel = new ActionLabel(url); |
|
|
|
|
if(ComparatorUtils.equals(url, PASSWORD_RESET_URL)){ |
|
|
|
|
actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Forgot-Password")); |
|
|
|
|
}else{ |
|
|
|
|
actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Register-Account")); |
|
|
|
|
} |
|
|
|
|
private BoxCenterAligmentPane getURLActionLabel(final String url) { |
|
|
|
|
ActionLabel actionLabel = new ActionLabel(url); |
|
|
|
|
if (ComparatorUtils.equals(url, SiteCenter.getInstance().acquireUrlByKind("bbs.reset"))) { |
|
|
|
|
actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Forgot-Password")); |
|
|
|
|
} else { |
|
|
|
|
actionLabel.setText(Inter.getLocText("FR-Designer-BBSLogin_Register-Account")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
actionLabel.addActionListener(new ActionListener() { |
|
|
|
|
actionLabel.addActionListener(new ActionListener() { |
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
try { |
|
|
|
|