RMIベースの顧客管理プログラム
参考:http://book.csdn.net/bookfiles/269/10026911932.shtml
実行効果:
//mvc.view.StreGUI.java
添付ファイルは完全なアプリケーションです。eclipseに導入した後、
まずmvc.server.StreServer.javaを実行します。
またmv.client.StreClint.javaを実行します。
実行効果:
//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を実行します。