java的設計思想java
(設計思想。是需要不斷領悟的。。編程
。安全
)
app
學java的人都知道這是向對象的編程語言,從字面上理解,就是針對對象的一些操做,將具備某一特性的實體封裝成一個類或者是將具備必定功能的方法,抽取出來封裝成一個供外面調用的方法,而後經過new這個類或方法生成對象,最後通框架
過對對象進行操做或者實現對應的功能。編程語言
如將一我的封裝成一我的的類。人有屬性:性別,年齡,出生日期。家庭住址等,外界對人進行操做時。僅僅能改變其屬性值。但是不能改變屬性的種類,這要更安全。而且當對人進行操做時。也是連帶屬性post
一塊兒進行操做,這就是面向對象的編程。性能
因此java的設計思想通常離不開封裝。如作一個項目,首先對項目的每個子系統進行封裝。而後對子系統中的每個模塊進行封裝,最後對每個模塊中的每個組件(組件:能完畢某一特定功能的方法)進行封裝,這裏的子系統、模塊、組件都是this
一個封裝體。這樣作不只能使項目作起來更加有條理。更加安全,而且讓後面的維護和更改更加方便、簡單、易操做。spa
(後面有項目的實例)
a、這是Java編程裏面你們公認的第一原則。
b、接口很是重要的一個功能:封裝隔離
c、接口是功能塊或封裝塊的外觀
接口及相關機制最主要的做用:經過接口可以實現不相關類的一樣行爲,而不需要考慮這些類之間的層次關係。
依據接口可以瞭解對象的交互界面,而不需要了解對象所屬的類。
面向對象程序設計講究「提升內聚,鬆散耦合」,那麼不一樣的程序模塊怎麼相互訪問呢,就是經過接口。也就是接口是各部分對外的統一外觀。接口在Java程序設計中體現的思想就是封裝隔離,因爲接口僅僅是描寫敘述一個統一的行爲,因此開發者在面
向接口編程時並不關心詳細的實現。
由以上講到的接口的做用和基本思想可以看到。接口在面向對象的Java程序設計中佔有舉足輕重的地位。其實在設計階段最重要的任務之中的一個就是設計出各部分的接口。而後經過接口的組合。造成程序的基本框架結構。
注:對於行爲模型,優先選用接口,儘可能少用抽象類
既爲約束子類的功能,又要提供一些公共的功能。就選用抽象類
最典型的:三層結構
① 表現層功能:展現數據、人機交互、收集參數調用邏輯層。
② 邏輯層功能:進行數據的邏輯校驗、進行邏輯推斷、實現業務功能、處理相關功能、處理興許流程、組織數據返回給表現層。
③ 數據層功能:實現數據持久化、實現對象和持久化數據的雙向映射。
① 表現層調用邏輯層,邏輯層調用數據層。不可以反過來。
② 層間交互也應該經過接口進行調用,以確保各層的實現獨立變化。
簡單點說就是對新增開放。對改動關閉。而且應儘可能作到不用改動模塊的源碼,就能更改模塊的行爲。
這個原則就是依賴抽象而不要依賴詳細實現。
這個原則就是不要使用通用的接口。而是爲不一樣的用戶使用不一樣的接口。
這個原則就是子類應當能夠替換父類並出現在父類能夠出現的不論什麼地方。
所設計的類功能要單一 。一個類應該是描寫敘述一類極其相關的屬性和方法。
指一個類。能夠在本身內部實現的功能就本身內部實現,不要去調其餘類,儘可能下降與其餘類的依賴關係。
沒必要對外開放的部分,一概不正確外開放。假設在不肯定屬性權限的狀況下,先把類的屬性設成private,用的時候再開。
Java規範中建議。一個類的大小不要超過1000行,一個方法的大小不要超過100行。
一個類依賴(使用或調用)了還有一個類,那麼在還有一個類中就不能反過來再依賴當前類。
用戶的需求是會不斷改變的,後期的改動與維護是不可避免的。所以軟件開發時就要考慮靈活性。
要權衡速度與資源耗費之間的關係。要考慮軟件能夠在必定範圍內可伸縮。
可擴展性指該應用程序能夠很是方便地加入新的功能。
要儘可能考慮複用,但也不能光考慮複用,不能把其餘的設計原則都丟掉了。
優先使用接口,假設既想約束子類的行爲,又要爲子類提供公共的功能時,採用抽象類。
類之間不要重複地調用。不要每次傳很是多的數據。
功能:圖形界面的我的信息管理系統,實現增、刪、改、查等功能,而且將相關信息存在文件裏。
設計思想:每個功能一個模塊。也就是一個封裝體。
addressApp.java(主界面)
設置界面的大致框架。如菜單,和麪板。標題等
package cn.hncu.addressManage; import java.awt.event.KeyEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Event; import java.awt.BorderLayout; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.KeyStroke; import java.awt.Point; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JMenuItem; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JFrame; import javax.swing.JDialog; import cn.hncu.addressManage.UI.ListPanel; public class addressApp { private JFrame jFrame = null; private JPanel jContentPane = null; private JMenuBar jJMenuBar = null; private JMenu fileMenu = null; private JMenu editMenu = null; private JMenu helpMenu = null; private JMenuItem exitMenuItem = null; private JMenuItem aboutMenuItem = null; private JMenuItem cutMenuItem = null; private JMenuItem copyMenuItem = null; private JMenuItem pasteMenuItem = null; private JMenuItem saveMenuItem = null; private JDialog aboutDialog = null; private JPanel aboutContentPane = null; private JLabel aboutVersionLabel = null; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SwingUtilities.invokeLater(new Runnable() { public void run() { addressApp application = new addressApp(); application.getJFrame().setVisible(true); } }); } /** * This method initializes jFrame * * @return javax.swing.JFrame */ private JFrame getJFrame() { if (jFrame == null) { jFrame = new JFrame(); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jFrame.setJMenuBar(getJJMenuBar()); jFrame.setSize(800, 650); jFrame.setContentPane(getJContentPane()); jFrame.setTitle("Application"); } return jFrame; } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); //把咱們的ListPanel加到jContentPane中 jContentPane.add(new ListPanel(jFrame,null,false)); //jContentPane.remove(listPanel) } return jContentPane; } /** * This method initializes jJMenuBar * * @return javax.swing.JMenuBar */ private JMenuBar getJJMenuBar() { if (jJMenuBar == null) { jJMenuBar = new JMenuBar(); jJMenuBar.add(getFileMenu()); jJMenuBar.add(getEditMenu()); jJMenuBar.add(getHelpMenu()); } return jJMenuBar; } /** * This method initializes jMenu * * @return javax.swing.JMenu */ private JMenu getFileMenu() { if (fileMenu == null) { fileMenu = new JMenu(); fileMenu.setText("File"); fileMenu.add(getSaveMenuItem()); fileMenu.add(getExitMenuItem()); } return fileMenu; } /** * This method initializes jMenu * * @return javax.swing.JMenu */ private JMenu getEditMenu() { if (editMenu == null) { editMenu = new JMenu(); editMenu.setText("Edit"); editMenu.add(getCutMenuItem()); editMenu.add(getCopyMenuItem()); editMenu.add(getPasteMenuItem()); } return editMenu; } /** * This method initializes jMenu * * @return javax.swing.JMenu */ private JMenu getHelpMenu() { if (helpMenu == null) { helpMenu = new JMenu(); helpMenu.setText("Help"); helpMenu.add(getAboutMenuItem()); } return helpMenu; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getExitMenuItem() { if (exitMenuItem == null) { exitMenuItem = new JMenuItem(); exitMenuItem.setText("Exit"); exitMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); } return exitMenuItem; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getAboutMenuItem() { if (aboutMenuItem == null) { aboutMenuItem = new JMenuItem(); aboutMenuItem.setText("About"); aboutMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JDialog aboutDialog = getAboutDialog(); aboutDialog.pack(); Point loc = getJFrame().getLocation(); loc.translate(20, 20); aboutDialog.setLocation(loc); aboutDialog.setVisible(true); } }); } return aboutMenuItem; } /** * This method initializes aboutDialog * * @return javax.swing.JDialog */ private JDialog getAboutDialog() { if (aboutDialog == null) { aboutDialog = new JDialog(getJFrame(), true); aboutDialog.setTitle("About"); aboutDialog.setContentPane(getAboutContentPane()); } return aboutDialog; } /** * This method initializes aboutContentPane * * @return javax.swing.JPanel */ private JPanel getAboutContentPane() { if (aboutContentPane == null) { aboutContentPane = new JPanel(); aboutContentPane.setLayout(new BorderLayout()); aboutContentPane.add(getAboutVersionLabel(), BorderLayout.CENTER); } return aboutContentPane; } /** * This method initializes aboutVersionLabel * * @return javax.swing.JLabel */ private JLabel getAboutVersionLabel() { if (aboutVersionLabel == null) { aboutVersionLabel = new JLabel(); aboutVersionLabel.setText("Version 1.0"); aboutVersionLabel.setHorizontalAlignment(SwingConstants.CENTER); } return aboutVersionLabel; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getCutMenuItem() { if (cutMenuItem == null) { cutMenuItem = new JMenuItem(); cutMenuItem.setText("Cut"); cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK, true)); } return cutMenuItem; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getCopyMenuItem() { if (copyMenuItem == null) { copyMenuItem = new JMenuItem(); copyMenuItem.setText("Copy"); copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK, true)); } return copyMenuItem; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getPasteMenuItem() { if (pasteMenuItem == null) { pasteMenuItem = new JMenuItem(); pasteMenuItem.setText("Paste"); pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, Event.CTRL_MASK, true)); } return pasteMenuItem; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getSaveMenuItem() { if (saveMenuItem == null) { saveMenuItem = new JMenuItem(); saveMenuItem.setText("Save"); saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Event.CTRL_MASK, true)); } return saveMenuItem; } }
ListPanel.java
清單面板,包含數據的顯示,和數據的相關操做button
package cn.hncu.addressManage.UI; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.KeyEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.SwingConstants; import cn.hncu.addressManage.business.MySet; import cn.hncu.utils.Panels; public class ListPanel extends JPanel { private static final long serialVersionUID = 1L; private JLabel jLabel = null; private JButton btnToAdd = null; private JFrame jf=null; private JList jListAddress = null; private JButton btnToUpdate = null; private JButton btnToDelete = null; private JButton btnToQuery = null; private Object objs[]; // @jve:decl-index=0: private boolean isQuery; /** * This is the default constructor */ public ListPanel(JFrame jf,Object objs[],boolean isQuery) { super(); this.jf = jf; this.objs = objs; this.isQuery = isQuery; initialize(); } /** * This method initializes this * * @return void */ private void initialize() { jLabel = new JLabel(); jLabel.setBounds(new Rectangle(294, 39, 202, 39)); jLabel.setFont(new Font("Dialog", Font.BOLD, 24)); jLabel.setForeground(Color.red); jLabel.setHorizontalAlignment(SwingConstants.CENTER); jLabel.setText("個人地址本信息"); this.setSize(800, 600); this.setLayout(null); this.add(jLabel, null); this.add(getBtnToAdd(), null); this.add(getJListAddress(), null); this.add(getBtnToUpdate(), null); this.add(getBtnToDelete(), null); this.add(getBtnToQuery(), null); } /** * This method initializes btnToAdd * * @return javax.swing.JButton */ private JButton getBtnToAdd() { if (btnToAdd == null) { btnToAdd = new JButton(); btnToAdd.setFont(new Font("Dialog", Font.BOLD, 18)); btnToAdd.setSize(new Dimension(120, 41)); btnToAdd.setLocation(new Point(83, 448)); btnToAdd.setMnemonic(KeyEvent.VK_UNDEFINED); btnToAdd.setText("轉到新增"); btnToAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { //界面切換 jf.getContentPane().removeAll(); jf.getContentPane().add(new AddPanel( jf )); jf.getContentPane().validate(); } }); } return btnToAdd; } /** * This method initializes jListAddress * * @return javax.swing.JList */ private JList getJListAddress() { if (jListAddress == null) { jListAddress = new JList(); jListAddress.setBounds(new Rectangle(181, 116, 369, 216)); //爲列表加入內容 if(!this.isQuery){ MySet mySet = new MySet(); objs= mySet.getAll(); } jListAddress.setListData(objs); } return jListAddress; } /** * This method initializes btnToUpdate * * @return javax.swing.JButton */ private JButton getBtnToUpdate() { if (btnToUpdate == null) { btnToUpdate = new JButton(); btnToUpdate.setBounds(new Rectangle(259, 446, 126, 46)); btnToUpdate.setFont(new Font("Dialog", Font.BOLD, 18)); btnToUpdate.setText("轉到改動"); btnToUpdate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { String updateStr = (String)jListAddress.getSelectedValue(); if(updateStr==null){ Panels.changePanel(jf, new ErrorPanel(jf,ListPanel.this)); }else{ //界面切換 jf.getContentPane().removeAll(); jf.getContentPane().add(new UpdatePanel( jf,updateStr )); jf.getContentPane().validate(); } } }); } return btnToUpdate; } /** * This method initializes btnToDelete * * @return javax.swing.JButton */ private JButton getBtnToDelete() { if (btnToDelete == null) { btnToDelete = new JButton(); btnToDelete.setBounds(new Rectangle(429, 446, 124, 46)); btnToDelete.setFont(new Font("Dialog", Font.BOLD, 18)); btnToDelete.setText("轉到刪除"); btnToDelete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { // jf.getContentPane().removeAll(); // jf.getContentPane().add(new DeletePanel()); // jf.getContentPane().validate(); String deleteStr = (String)(jListAddress.getSelectedValue()); if(deleteStr==null){ Panels.changePanel(jf, new ErrorPanel(jf,ListPanel.this)); }else{ //System.out.println(deleteStr); Panels.changePanel(jf, new DeletePanel(jf,deleteStr)); } } }); } return btnToDelete; } /** * This method initializes btnToQuery * * @return javax.swing.JButton */ private JButton getBtnToQuery() { if (btnToQuery == null) { btnToQuery = new JButton(); btnToQuery.setBounds(new Rectangle(617, 445, 121, 46)); btnToQuery.setFont(new Font("Dialog", Font.BOLD, 18)); btnToQuery.setText("轉到查詢"); btnToQuery.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { Panels.changePanel(jf, new QueryPanel(jf)); } }); } return btnToQuery; } }AddPanel.java
當點擊加入button時,就會跳到這個面板中
package cn.hncu.addressManage.UI; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Point; import java.awt.Rectangle; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import cn.hncu.addressManage.business.MySet; public class AddPanel extends JPanel { private static final long serialVersionUID = 1L; private JLabel jLabel = null; private JLabel jLabel1 = null; private JTextField tfdName = null; private JLabel jLabel2 = null; private JTextField tfdAge = null; private JLabel jLabel3 = null; private JTextField tfdAddress = null; private JButton btnAdd = null; private JButton btnBack = null; private JFrame mainFrame = null; /** * This is the default constructor */ public AddPanel(JFrame mainFrame) { super(); this.mainFrame = mainFrame; initialize(); } /** * This method initializes this * * @return void */ private void initialize() { jLabel3 = new JLabel(); jLabel3.setBounds(new Rectangle(111, 292, 57, 35)); jLabel3.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel3.setText("地址:"); jLabel2 = new JLabel(); jLabel2.setBounds(new Rectangle(109, 222, 54, 44)); jLabel2.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel2.setText("年齡:"); jLabel1 = new JLabel(); jLabel1.setBounds(new Rectangle(112, 147, 51, 45)); jLabel1.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel1.setText("姓名:"); jLabel = new JLabel(); jLabel.setBounds(new Rectangle(339, 41, 160, 49)); jLabel.setFont(new Font("Dialog", Font.BOLD, 24)); jLabel.setForeground(Color.red); jLabel.setHorizontalAlignment(SwingConstants.CENTER); jLabel.setForeground(Color.blue); jLabel.setText("地址本加入"); this.setSize(800, 600); this.setLayout(null); this.add(jLabel, null); this.add(jLabel1, null); this.add(getTfdName(), null); this.add(jLabel2, null); this.add(getTfdAge(), null); this.add(jLabel3, null); this.add(getTfdAddress(), null); this.add(getBtnAdd(), null); this.add(getBtnBack(), null); } /** * This method initializes tfdName * * @return javax.swing.JTextField */ private JTextField getTfdName() { if (tfdName == null) { tfdName = new JTextField(); tfdName.setBounds(new Rectangle(191, 148, 145, 47)); } return tfdName; } /** * This method initializes tfdAge * * @return javax.swing.JTextField */ private JTextField getTfdAge() { if (tfdAge == null) { tfdAge = new JTextField(); tfdAge.setBounds(new Rectangle(187, 223, 153, 45)); } return tfdAge; } /** * This method initializes tfdAddress * * @return javax.swing.JTextField */ private JTextField getTfdAddress() { if (tfdAddress == null) { tfdAddress = new JTextField(); tfdAddress.setBounds(new Rectangle(184, 290, 215, 41)); } return tfdAddress; } /** * This method initializes btnAdd * * @return javax.swing.JButton */ private JButton getBtnAdd() { if (btnAdd == null) { btnAdd = new JButton(); btnAdd.setSize(new Dimension(134, 49)); btnAdd.setText("新增"); btnAdd.setFont(new Font("Dialog", Font.BOLD, 18)); btnAdd.setLocation(new Point(112, 388)); btnAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { add(); // TODO Auto-generated Event stub actionPerformed() } }); } return btnAdd; } private JButton getBtnBack() { if (btnBack == null) { btnBack = new JButton(); btnBack.setSize(new Dimension(134, 49)); btnBack.setText("返回"); btnBack.setFont(new Font("Dialog", Font.BOLD, 18)); btnBack.setLocation(new Point(445, 387)); btnBack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { back(); } }); } return btnBack; } //把所有的處理方法寫在這裏 //地址信息加入 private void add(){ //1收集參數 String name = tfdName.getText(); String age = tfdAge.getText(); int iAge = 0; try { iAge = Integer.parseInt(age); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(this, "年齡數據格式錯誤!!"); return; } String address = tfdAddress.getText(); //2組織參數 String str = name +","+iAge+","+address; //3調用邏輯層 MySet mySet = new MySet(); boolean flag = mySet.add(str); //4依據邏輯層的返回結果,導向不一樣的頁面 if(flag){//加入成功,返回到ListPanel界面進行顯示 back(); }else{ this.mainFrame.getContentPane().removeAll(); this.mainFrame.getContentPane().add(new ErrorPanel(mainFrame,this)); this.mainFrame.getContentPane().validate(); } } //返回到主界面 private void back() { this.mainFrame.getContentPane().removeAll(); this.mainFrame.getContentPane().add(new ListPanel(this.mainFrame,null,false)); this.mainFrame.getContentPane().validate(); } }
改動面板
package cn.hncu.addressManage.UI; import java.awt.Font; import java.awt.Rectangle; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import cn.hncu.addressManage.business.MySet; public class UpdatePanel extends JPanel { private static final long serialVersionUID = 1L; private JLabel jLabel = null; private JTextField tfdName = null; private JLabel jLabel1 = null; private JTextField tfdAge = null; private JLabel jLabel2 = null; private JTextField tfdAddress = null; private JButton btnUpdate = null; private JButton btnBack = null; private JFrame mainFrame=null; private String updateStr=""; // @jve:decl-index=0: private String strs[]; public UpdatePanel(JFrame mainFrame, String updateStr) { super(); this.mainFrame = mainFrame; this.updateStr = updateStr; strs = updateStr.split(","); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { jLabel2 = new JLabel(); jLabel2.setBounds(new Rectangle(121, 281, 56, 45)); jLabel2.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel2.setText("地址:"); jLabel1 = new JLabel(); jLabel1.setBounds(new Rectangle(123, 183, 56, 45)); jLabel1.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel1.setText("年齡:"); jLabel = new JLabel(); jLabel.setBounds(new Rectangle(129, 96, 49, 41)); jLabel.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel.setText("姓名:"); this.setSize(800, 600); this.setLayout(null); this.add(jLabel, null); this.add(getTfdName(), null); this.add(jLabel1, null); this.add(getTfdAge(), null); this.add(jLabel2, null); this.add(getTfdAddress(), null); this.add(getBtnUpdate(), null); this.add(getBtnBack(), null); } /** * This method initializes tfdName * * @return javax.swing.JTextField */ private JTextField getTfdName() { if (tfdName == null) { tfdName = new JTextField(); tfdName.setBounds(new Rectangle(191, 96, 139, 48)); tfdName.setText(strs[0]); } return tfdName; } /** * This method initializes tfdAge * * @return javax.swing.JTextField */ private JTextField getTfdAge() { if (tfdAge == null) { tfdAge = new JTextField(); tfdAge.setBounds(new Rectangle(197, 180, 140, 53)); //應該解析,異常處理 tfdAge.setText(strs[1]); } return tfdAge; } /** * This method initializes tfdAddress * * @return javax.swing.JTextField */ private JTextField getTfdAddress() { if (tfdAddress == null) { tfdAddress = new JTextField(); tfdAddress.setBounds(new Rectangle(196, 280, 160, 51)); tfdAddress.setText(strs[2]); } return tfdAddress; } /** * This method initializes btnUpdate * * @return javax.swing.JButton */ private JButton getBtnUpdate() { if (btnUpdate == null) { btnUpdate = new JButton(); btnUpdate.setBounds(new Rectangle(119, 403, 122, 48)); btnUpdate.setFont(new Font("Dialog", Font.BOLD, 18)); btnUpdate.setText("改動"); btnUpdate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { update(); } }); } return btnUpdate; } /** * This method initializes btnBack * * @return javax.swing.JButton */ private JButton getBtnBack() { if (btnBack == null) { btnBack = new JButton(); btnBack.setBounds(new Rectangle(354, 402, 127, 51)); btnBack.setFont(new Font("Dialog", Font.BOLD, 18)); btnBack.setText("返回"); btnBack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { back(); } }); } return btnBack; } //返回到主界面 private void back() { this.mainFrame.getContentPane().removeAll(); this.mainFrame.getContentPane().add(new ListPanel(this.mainFrame,null,false)); this.mainFrame.getContentPane().validate(); } //////////////程序的邏輯處理方法/////////////// /** * 記錄改動的事件處理方法 */ private void update() { //1收集參數 String name = tfdName.getText(); String age = tfdAge.getText(); int iAge = 0; try { iAge = Integer.parseInt(age); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(this, "年齡數據格式錯誤!!"); return; } String address = tfdAddress.getText(); //2組織參數 String str = name +","+iAge+","+address; //3調用邏輯層 MySet mySet = new MySet(); boolean flag = mySet.update(str,updateStr); //4依據邏輯層的返回結果,導向不一樣的頁面 if(flag){//改動成功,返回到ListPanel界面進行顯示 back(); }else{ //假設改動後的記錄在mySet中已存在,則返回false,導向出錯頁面. //假設被改動的記錄不存在,也是返回false。導向出錯頁面 this.mainFrame.getContentPane().removeAll(); this.mainFrame.getContentPane().add(new ErrorPanel(mainFrame,this)); this.mainFrame.getContentPane().validate(); } } }
刪除面板
package cn.hncu.addressManage.UI; import java.awt.Font; import java.awt.Rectangle; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import cn.hncu.addressManage.business.MySet; import cn.hncu.utils.Panels; public class DeletePanel extends JPanel { private static final long serialVersionUID = 1L; private JLabel jLabel = null; private JLabel jLabel1 = null; private JTextField tfdName = null; private JLabel jLabel2 = null; private JTextField tfdAge = null; private JLabel jLabel3 = null; private JTextField tfdAddress = null; private JButton btnDelete = null; private JButton btnBack = null; private JFrame mainFrame = null; private String strs[] = null; private String deleteStr=""; // @jve:decl-index=0: /** * This is the default constructor */ public DeletePanel(JFrame mainFrame, String deleteStr) { super(); this.mainFrame = mainFrame; this.deleteStr = deleteStr; strs = deleteStr.split(","); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { jLabel3 = new JLabel(); jLabel3.setBounds(new Rectangle(167, 323, 58, 32)); jLabel3.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel3.setText("地址:"); jLabel2 = new JLabel(); jLabel2.setBounds(new Rectangle(164, 242, 53, 43)); jLabel2.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel2.setText("年齡:"); jLabel1 = new JLabel(); jLabel1.setBounds(new Rectangle(166, 161, 58, 45)); jLabel1.setFont(new Font("Dialog", Font.BOLD, 18)); jLabel1.setText("姓名:"); jLabel = new JLabel(); jLabel.setBounds(new Rectangle(377, 67, 182, 53)); jLabel.setFont(new Font("Dialog", Font.BOLD, 24)); jLabel.setHorizontalAlignment(SwingConstants.CENTER); jLabel.setText("刪除地址"); this.setSize(800, 600); this.setLayout(null); this.add(jLabel, null); this.add(jLabel1, null); this.add(getTfdName(), null); this.add(jLabel2, null); this.add(getTfdAg