RMIベースの顧客管理プログラム


参考:http://book.csdn.net/bookfiles/269/10026911932.shtml
実行効果:
 
 
//mvc.view.StreGUI.java
 
package mvc.view;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.awt.event.WindowListener;
import java.io.Serializable;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.DefaultCaret;

import data.Customer;

/**
 *@date 2010-3-14   05:12:35
 *@author dycc
 *@file mvc.view.StoreGUI.java
 */
public class StoreGUI implements Serializable{
	/**
     * 
     */
    private static final long serialVersionUID = 1L;
	//          
	protected JFrame frame;
	protected JTabbedPane tabbedPane = new JTabbedPane();
	protected JPanel logPanel = new JPanel();
	//          
	protected JPanel pan_singleCust = new JPanel();
	protected JLabel lab_id = new JLabel("id:",SwingConstants.RIGHT);
	protected JLabel lab_name = new JLabel("    :",SwingConstants.RIGHT);
	protected JLabel lab_address = new JLabel("    :",SwingConstants.RIGHT);
	protected JLabel lab_age = new JLabel("      :",SwingConstants.RIGHT);
	protected JTextField txt_id = new JTextField(32);
	protected JTextField txt_name = new JTextField(32);
	protected JTextField txt_address = new JTextField(32);
	protected JTextField txt_age = new JTextField(32);
	protected JButton btn_add = new JButton("    ");
	protected JButton btn_del = new JButton("    ");
	protected JButton btn_get = new JButton("    ");
	protected JButton btn_upd = new JButton("    ");
	//          
	protected JPanel pan_allCust = new JPanel();
	protected JLabel lab_allCust = new JLabel("      ",SwingConstants.CENTER);
	protected JScrollPane srp_tab;
	protected JTable tab;
	protected String[] tab_header = new String[]{"id","  ","  ","  "};
	protected DefaultTableModel tabM;
	//        
	protected JLabel lab_log = new JLabel("    ",SwingConstants.CENTER);
	protected JTextArea txA_log = new JTextArea(9,50);
	protected JScrollPane srp_log = new JScrollPane(txA_log);
	
	/**
	 *     
	 */
	public StoreGUI(){
		JFrame.setDefaultLookAndFeelDecorated(true);
		buildDisplay();
	}
	/**
	 *      
	 */
	public void buildDisplay(){
		tabbedPane.add("      ", createSingleCust());
		tabbedPane.add("      ",createdAllCust());
		logPanel.setLayout(new BorderLayout());
		logPanel.add(lab_log,BorderLayout.NORTH);
		logPanel.add(srp_log,BorderLayout.CENTER);
		DefaultCaret caret = (DefaultCaret)txA_log.getCaret();
		caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);      //        
		
		frame = new JFrame("      ");
		frame.setSize(600, 400);
		
		GridBagLayout gridbag = new GridBagLayout();
		GridBagConstraints cons = new GridBagConstraints();
		cons.fill = GridBagConstraints.BOTH;
		
		Container content_panel = frame.getContentPane();
		content_panel.setLayout(gridbag);
		
		cons.gridx = 0;
		cons.gridy = 0;
		cons.weightx = 1.0;
		cons.weighty = 0.6;
		gridbag.setConstraints(tabbedPane, cons);
		content_panel.add(tabbedPane);
		
		cons.gridy = 1;
		cons.weighty = 0.4;
		gridbag.setConstraints(logPanel, cons);
		content_panel.add(logPanel);
		//         DO_NOTHING_ON_CLOSE,          
		frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		frame.setVisible(true);
		centerFrame(frame);
	}
	/**
	 *          Panel
	 * @return
	 */
	public JPanel createSingleCust(){
		GridBagLayout gridbag = new GridBagLayout();
		GridBagConstraints cons = new GridBagConstraints();
		
		cons.fill = GridBagConstraints.BOTH;
		cons.weighty = 0.20;
		
		pan_singleCust.setLayout(gridbag);
		
		cons.gridx = 0;
		cons.gridy = 0;
		cons.weightx = 0.25;
		cons.insets = new Insets(2,6,2,12);
		gridbag.setConstraints(lab_id, cons);
		pan_singleCust.add(lab_id);
		
		cons.gridy = 1;
		gridbag.setConstraints(lab_name, cons);
		pan_singleCust.add(lab_name);
		
		cons.gridy = 2;
		gridbag.setConstraints(lab_address, cons);
		pan_singleCust.add(lab_address);
		
		cons.gridy = 3;
		gridbag.setConstraints(lab_age, cons);
		pan_singleCust.add(lab_age);
		
		cons.gridx = 1;
		cons.gridy = 0;
		cons.gridwidth = 3;
		cons.weightx = 0.75;
		cons.insets = new Insets(0,0,0,0);
		gridbag.setConstraints(txt_id, cons);
		pan_singleCust.add(txt_id);
		
		cons.gridy = 1;
		gridbag.setConstraints(txt_name, cons);
		pan_singleCust.add(txt_name);
		
		cons.gridy = 2;
		gridbag.setConstraints(txt_address, cons);
		pan_singleCust.add(txt_address);
		
		cons.gridy = 3;
		gridbag.setConstraints(txt_age, cons);
		pan_singleCust.add(txt_age);
		
		cons.gridx = 0;
		cons.gridy = 4;
		cons.gridwidth = 1;
		cons.weightx = 0.25;
		gridbag.setConstraints(btn_add, cons);
		pan_singleCust.add(btn_add);
		
		cons.gridx = 1;
		gridbag.setConstraints(btn_del, cons);
		pan_singleCust.add(btn_del);
		
		cons.gridx = 2;
		gridbag.setConstraints(btn_get, cons);
		pan_singleCust.add(btn_get);
		
		cons.gridx = 3;
		gridbag.setConstraints(btn_upd, cons);
		pan_singleCust.add(btn_upd);
		return pan_singleCust;
	}
	/**
	 *          Panel
	 * @return
	 */
	public JPanel createdAllCust(){
		pan_allCust.setLayout(new BorderLayout());
		
		tabM = new DefaultTableModel(tab_header,10);
		tab = new JTable(tabM);
		srp_tab = new JScrollPane(tab);
		tab.setRowHeight(32);
		tab.getTableHeader().setReorderingAllowed(false);  //       
		tab.getTableHeader().setResizingAllowed(true);     //      
		
		pan_allCust.add(lab_allCust,BorderLayout.NORTH);
		pan_allCust.add(srp_tab,BorderLayout.CENTER);
		
		return pan_allCust;
	}
	/**
	 *       
	 * @param frame
	 */
	public void centerFrame(JFrame frame){
		double width = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
		double height = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
		int left = (int)(width - frame.getWidth())/2;
		int top = (int)(height - frame.getHeight())/2;
		frame.setLocation(left, top);
	}
	/**
	 *    TabbedPanel   
	 * @param listener
	 */
	public void addTabChangeListener(ChangeListener listener){
		this.tabbedPane.addChangeListener(listener);
	}
	/**
	 *           
	 * @param listeners
	 */
	public void addCURDListener(ActionListener[] listeners){
		if(listeners.length != 4){
			return;
		}
		btn_add.addActionListener(listeners[0]);
		btn_del.addActionListener(listeners[1]);
		btn_get.addActionListener(listeners[2]);
		btn_upd.addActionListener(listeners[3]);
	}
	/**
	 *         
	 * @param listener
	 */
	public void addWindowListener(WindowListener listener){
		frame.addWindowListener(listener);
	}
	/**
	 *     
	 */
	public void destroyWindow(){
		frame.dispose();
		System.exit(0);
	}
	/**
	 *       
	 * @param customer
	 */
	public void refreshCustomer(Customer customer){
		if(customer == null || customer.getId() == -1){
			txt_id.setText("");
			txt_name.setText("");
			txt_address.setText("");
			txt_age.setText("");
		}else{
			txt_id.setText(((Long)customer.getId()).toString());
			txt_name.setText(customer.getName());
			txt_address.setText(customer.getAddress());
			txt_age.setText(((Integer)customer.getAge()).toString());
		}
	}
	/**
	 *         
	 * @param custs
	 */
	public void refreshAllCustomer(List<Customer> custs){
		String[][] data = new String[custs.size()][4];
		for(int idx=0;idx < custs.size();idx++){
			Customer temp = custs.get(idx);
			data[idx][0] = new Long(temp.getId()).toString();
			data[idx][1] = temp.getName();
			data[idx][2] = temp.getAddress();
			data[idx][3] = new Integer(temp.getAge()).toString();
		}
		tabM.setDataVector(data,tab_header);
	}
	/**
	 *      tab    
	 * @param customer
	 */
	public int getTabbedIndex(){
		return tabbedPane.getSelectedIndex();
	}
	/**
	 *     
	 * @param msg
	 */
	public void updateLog(String msg){
		txA_log.append(msg + "\r
"); // txA_log.setCaretPosition(txA_log.getText().length()); } /** * Id * @return */ public long getCustomerId(){ try{ return Long.parseLong(txt_id.getText().trim()); } catch(Exception e){ updateLog(e.getMessage()); return -1; } } /** * * @return */ public Customer getCustomer(){ try{ Customer customer = new Customer(); customer.setId(Long.parseLong(txt_id.getText().trim())); customer.setName(txt_name.getText().trim()); customer.setAddress(txt_address.getText().trim()); customer.setAge(Integer.parseInt(txt_age.getText().trim())); return customer; } catch(Exception e){ updateLog(e.getMessage()); return null; } } }
 
添付ファイルは完全なアプリケーションです。eclipseに導入した後、
まずmvc.server.StreServer.javaを実行します。
またmv.client.StreClint.javaを実行します。