我已經設置了一個運行並接受來自我的遠程客戶端的連接的服務器,現在我正在使用我的GUI。Java遠程客戶端GUI
在開始之前,我的目標是創建一個漂亮的客戶端,它將擁有一個登錄屏幕(登錄/密碼),然後在用戶登錄後使用我的選項/或許還有一個聊天框。
我在網上搜索了很多,並使用這個網站來設置我的服務器並讓事情起作用,但是我對GUI /理論有點問題,希望這裏有人能指導我一點。
目前,我已經建立了一個名爲ClientGUI的類,該類從我的主類中調用,並生成一個420x240大小的屏幕。在將我的登錄名/密碼JTextField框放置在這裏之後,按照我下面概述的方式設置其他GUI是否「正確」?我不確定我是否應該將它們放在一個班級下,或者我會如何從一個GUI進入下一個班級。我想我應該根據需要重新繪製和調整屏幕大小,但我不知道如何設置它。一個簡要的提綱將會有幫助(你不需要給我確切的代碼)。
public class ClientGUI extends JFrame {
public ClientGUI() {
setSize(420,240);
setVisible(true);
setTitle("Title");
setResizable(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
}
public loginGUI() {
//code for my login/pw boxes, images, listener for entering information
}
public afterlogginginGUI() {
}
paint() {
//not too sure about how this should be setup either. Should I do all my textfield
//and image work in paint()?
}
}
我從來沒有做過這樣的事情,所以我覺得我沒有以理想的方式設置它。
另一種方法是爲我想要的每個「屏幕」都擴展JFrame的不同java類,但是如果我這樣做,我會這樣做嗎?
在我的主要RemoteClient類:
main {
ClientGUI();
//display whatever
LoginGUI();
//listen for login info
if (loginIsValid) {
afterlogginginGUI();
}
}
我已經對如何驗證登錄信息有一個大概的瞭解(我已經建立了我的服務器到客戶端的形式克/讀),所以我知道我會怎樣觸發某些事件。當你說要將核心功能分離到不同的類時,你的意思是把所有的東西(例如1個用於登錄視圖的類,1個用於後來的任何類的類)分離出來,或者只把函數分開(比如驗證而不是佈局)?我假定你的意思是分開的一切。 我會閱讀這些鏈接。 – Rahul 2014-10-08 04:55:45
*「我認爲你的意思是分開一切」* - 是的,一般來說,這是最好的方法。這是[Model-view-controller](http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller)範例的前提。基本上,你的UI(視圖)會從用戶那裏收集數據,當按下「登錄」按鈕時,按鈕的「ActionListener」會要求控制器執行驗證。這意味着您可以實際改變驗證的工作方式,而無需更改視圖,這是一個基本示例。如果您想知道,該模型可能包含憑據 – MadProgrammer 2014-10-08 04:59:48
我正在爲我的登錄屏幕設計我的GUI,現在使用JFrame。爲什麼你說使用JPanel而不是JFrame有特定的原因嗎?另外,在創建我的第二個屏幕時,是否可以簡單地創建另一個JFrame並在其自己的類中單獨設計它,然後退出我的登錄窗口並創建新類的實例?我知道你建議使用CardLayout,我可能會這樣做,但我在網上看了一個例子,想知道這是轉換到下一個視圖的最佳方式。 – Rahul 2014-10-08 06:06:32