求助!我寫了一個java sql的登錄注冊界面,一個類寫登錄頁面,另一個類里監聽,但是監聽完之后怎么在這個類里關閉那個登錄的界面,它們不在一個類里沒法呼叫啊。
就是登錄界面里寫了JFrame j=new JFrame(),但是在下一個類里沒法呼叫這個j,請問該如何關閉
uj5u.com熱心網友回復:
把j也傳給監聽類uj5u.com熱心網友回復:
為什么用監聽的去關閉,登錄處理后,直接關閉就是了非要外部關閉,需要寫訊息介面,外部類發送訊息,讓視窗自己執行關閉
uj5u.com熱心網友回復:
用dispose()方法關閉當前視窗uj5u.com熱心網友回復:
其實要達到你所說的GUI視窗控制并不難,無論你程式中有幾個類,都可以根據業務需要而將它們進行相互的關聯,從而達到我們的業務需求目的。從你簡單的敘述可以知道你的視窗是直接在某個類(比如A)中直接創建了一個JFream 框架物件充當登錄視窗,而另外一個類組件(比如B)實作對登錄的監聽動作功能。實際你在呼叫啟動方法而現實顯示登錄視窗后,用戶輸入完資訊必然要呼叫B類的監聽登錄方法,如果想在B類中控制你創建的JFream實體(也就是登錄視窗),只要通過執行呼叫B類的監聽登錄方法時作為引數傳遞JFream物件就可以了。
在登錄成功后就可以在監聽B類中操作JFream物件從而關閉它,當然如何你不想在呼叫登錄方法中作為引數,就在呼叫登錄方法前將JFream物件賦值給B監聽物件的屬性(前提是B類中應有個JFream成員屬性,也就是登錄視窗),推薦使用后面的方式。
uj5u.com熱心網友回復:
補充一下,為了更加方便操作,建議你創建JFream 登錄視窗的類繼承JFream,雖然有些小耦合性,但是更容易撰寫程式uj5u.com熱心網友回復:
具體要怎么傳啊
uj5u.com熱心網友回復:
請問怎么將jframe物件賦值給監聽類啊
uj5u.com熱心網友回復:
我是想寫登錄成功之后自動關閉登錄視窗然后跳轉到其他頁面,不然那個登錄視窗就一直在那,請問介面應該怎么寫啊
uj5u.com熱心網友回復:
package com.demo;/**
* 用戶組件(如果需要)
* @author java_
*
*/
public class User {
private String name;
private String password;
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
}
uj5u.com熱心網友回復:
其實要達到你所說的GUI視窗控制并不難,無論你程式中有幾個類,都可以根據業務需要而將它們進行相互的關聯,從而達到我們的業務需求目的。
從你簡單的敘述可以知道你的視窗是直接在某個類(比如A)中直接創建了一個JFream 框架物件充當登錄視窗,而另外一個類組件(比如B)實作對登錄的監聽動作功能。實際你在呼叫啟動方法而現實顯示登錄視窗后,用戶輸入完資訊必然要呼叫B類的監聽登錄方法,如果想在B類中控制你創建的JFream實體(也就是登錄視窗),只要通過執行呼叫B類的監聽登錄方法時作為引數傳遞JFream物件就可以了。
在登錄成功后就可以在監聽B類中操作JFream物件從而關閉它,當然如何你不想在呼叫登錄方法中作為引數,就在呼叫登錄方法前將JFream物件賦值給B監聽物件的屬性(前提是B類中應有個JFream成員屬性,也就是登錄視窗),推薦使用后面的方式。
請問怎么將jframe物件賦值給監聽類啊
import javax.swing.JFrame;
/**
* 登錄監聽簡單實作示例,不考慮任何多執行緒
* @author java_
*
*/
public class UserLoginListener {
private JFrame loginWin; // 登錄視窗JFrame組件
public User loginListening(String name,String password) {
boolean result = login(name,password);
if(result) {// 登錄成功
User user = new User();
user.setName(name);
user.setPassword(password);
/*關閉登錄視窗(此處并未釋放視窗,只是隱藏,合適時機可重新顯示)*/
loginWin.setVisible(false);
return user; // 回傳登錄用戶(如果登錄視窗組件需要此物件)
}
return null; // 登錄失敗,
}
private boolean login(String name,String password) {
/* 驗證登錄實作邏輯 */
return false; //
}
public UserLoginListener() {
}
public UserLoginListener(JFrame loginWin) {
this.loginWin = loginWin;
}
public void setLoginWin(JFrame loginWin) {
this.loginWin = loginWin;
}
}
uj5u.com熱心網友回復:
其實要達到你所說的GUI視窗控制并不難,無論你程式中有幾個類,都可以根據業務需要而將它們進行相互的關聯,從而達到我們的業務需求目的。
從你簡單的敘述可以知道你的視窗是直接在某個類(比如A)中直接創建了一個JFream 框架物件充當登錄視窗,而另外一個類組件(比如B)實作對登錄的監聽動作功能。實際你在呼叫啟動方法而現實顯示登錄視窗后,用戶輸入完資訊必然要呼叫B類的監聽登錄方法,如果想在B類中控制你創建的JFream實體(也就是登錄視窗),只要通過執行呼叫B類的監聽登錄方法時作為引數傳遞JFream物件就可以了。
在登錄成功后就可以在監聽B類中操作JFream物件從而關閉它,當然如何你不想在呼叫登錄方法中作為引數,就在呼叫登錄方法前將JFream物件賦值給B監聽物件的屬性(前提是B類中應有個JFream成員屬性,也就是登錄視窗),推薦使用后面的方式。
請問怎么將jframe物件賦值給監聽類啊
import java.awt.HeadlessException;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import com.demo.User;
import com.demo.UserLoginListener;
/**
* 登錄視窗,此類繼承JFrame方便使用框架方法功能亦可定制自定方法
* 此視窗省略創建若干GUI組件
* @author java_
*
*/
public class LoginWindows extends JFrame {
private User user; // 登錄用戶默認為null
private JButton loginButton; // 登錄按鈕,監聽此按鈕點擊事件處理用戶提交登錄資訊
private LoginWindows self; // 當視窗自己
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public JButton getLoginButton() {
return loginButton;
}
public void setLoginButtion(JButton loginButton) {
this.loginButton = loginButton;
}
public LoginWindows() throws HeadlessException {
super();
init(); // 呼叫方法對視窗進行初始化
}
//初始化方法
private void init() {
self = this;
this.setVisible(true); // 設定視窗為可見
this.setBounds(200, 150, 800, 650);
this.setLayout(null);
loginButton = new JButton("請登錄");
loginButton.setBounds(150, 400, 150, 30);
this.add(loginButton);
/* 添加登錄按鈕監聽動作*/
loginButton.addMouseListener(new LoginButtonListener());
this.validate(); // 驗證
}
/* 利用內部類實作登錄監聽處理*/
class LoginButtonListener implements MouseListener{
@Override
public void mouseClicked(MouseEvent e) {
if(e.getButton() == 1) {// 如果是點擊滑鼠左鍵
String name = "admin"; // 實際應從文本框獲取用戶填寫登錄名
String pwd = "1234564"; // 同name操作
// 創建UserLoginListener 并傳遞當前視窗物件參考
UserLoginListener listener = new UserLoginListener(self);
user = listener.loginListening(pwd, pwd);
if(user == null) {// 登錄失敗
// 顯示提示資訊及相關其他處理代碼
System.out.println("登錄失敗");
}else
System.out.println("登錄成功");
}
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated meth
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53739.html
標籤:Java SE
上一篇:oozie發郵件亂碼
下一篇:求演算法
