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