Java的GUI設計
阿新 • • 發佈:2018-11-08
這裡筆者寫一些自己做GUI時候的心得,希望可以幫助需要學習的同學,函式的實現和介面設計不在同一個檔案中,且涉及引數的傳遞
一、繼承於JFrame
當遇到繼承於JFrame的類的時候,可以省去建立物件,直接使用元件
setBounds(200, 200, 500, 400);
getContentPane().setBackground(Color.gray);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle("MENU");
其中setBounds是設計視窗的大小,getContentPane是設計元件的,setdefault設計關閉型別這些內容在使用時可以
去查一下使用的手冊,由於在構建程式的時候涉及到引數的傳遞,因此在傳遞時要注意引數的一一對應關係
在使用的時候Button按鈕需要建立監聽。其中還包括從鍵盤的監聽
Change_Pass.addActionListener(gui);
Save_Money.addActionListener(gui);
WithDraw_Money.addActionListener(gui);
Exit.addActionListener(gui);
Query.addActionListener(gui);
Logoff.addActionListener(gui);
Last.addActionListener(gui);
public void Set_User_Output(JTextField op){
Output_Text = op;
// 註冊監聽鍵盤事件監聽器
Output_Text.addKeyListener(new KeyAdapter() {
// 處理鍵盤事件
@Override
public void keyTyped(KeyEvent e) {
char key = e.getKeyChar();
if(!(key >= KeyEvent.VK_0 && key <= KeyEvent.VK_9)){
int su = JOptionPane.showConfirmDialog(null, "please enter Number", "WARNING",JOptionPane.OK_CANCEL_OPTION);
if (su == 0){
Output_Text.setText("");
}
e.consume();
}
}
});
}
監聽物件也是要一一對應,不能出錯,最後一個是傳遞當前的視窗,可以在其他的類中間關閉這個視窗的使用使用【建立的JFrame的物件】.dispose()
就可以關閉這個視窗,再通過建立的接收物件獲取到使用者接收到的內容
gui.Change_Pass_Button(Change_Pass);
gui.Logoff_Button(Logoff);
gui.Exit_Button(Exit);
gui.Query_Button(Query);
gui.WithDraw_Money_Button(WithDraw_Money);
gui.Save_Money_Button(Save_Money);
gui.Last_Button(Last);
gui.Set_JFrame(this);
以上方法基本完成了對文字的操作內容和實現函式之間的引數傳遞,每次在使用的時候一定要新增異常處理異常處理可以簡化程式碼的錯誤判斷
如果能詳細的報出錯誤,程式碼就十分的友好。在取消判斷是或者刪除操作時一定要有確認判斷。
int ju = JOptionPane.showConfirmDialog(null, "Do you want to Back", "Tip", JOptionPane.OK_CANCEL_OPTION);
if (ju == 0) {
JOptionPane.showMessageDialog(null, "The interface will Exit.......");
Id_Text.setText("");
Pw_Text.setText("");
Output_Text.setText("");
// 先關閉視窗
wm.dispose();
// 建立新的GUI介面
gui = new GUI();
}
showConfirmDialog就是使用者確認的一個提示。
新增背景圖片
// 建立java的影象介面 background放在了label中
// 檔案的路徑
// 當檔案路徑帶上src的時候就可以獲取本地的檔案
ImageIcon image=new ImageIcon("src\\signer\\time6.jpg");
JLabel logolabel = new JLabel(image);
logolabel.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
// 設定底層把圖片放在最下面的一層
getLayeredPane().add(logolabel,new Integer(Integer.MIN_VALUE));
//設定內容面板 getContentPane前面新增 這個JFrame的物件 由於這個圖片是繼承了JFrame 所以不需要物件 或者使用this
JPanel jp = (JPanel) this.getContentPane();
//設定內容面板未透明 true代表透明 透明之後的gui介面是看不到背景影象的
jp.setOpaque(false);
上面是新增背景圖片的方法。音訊還在探索.........。
二、不繼承JFrame
不繼承的JFrame就需要建立物件,JFrame的物件使用的時候和繼承的一樣但是需要新增【JFrame的物件名】.【元件方式】
關閉操作的時候【JFrame的物件】.dispose(),就可以了關於視窗關閉的四種方式可以取網上進行檢視。其他的內容可以去網上查詢資料。
最後原始碼在GitHub上面,讀者可以自行下下來檢視。程式碼一般,筆者還在努力。
https://github.com/pzq7025