⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculatorclient.java

📁 一个简单但是有效的JINI源码示例
💻 JAVA
字号:
/*
 * 创建日期 2005-4-20
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package BUAA.NLSDE;

/**
 * @author friends
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
 
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
 
import com.sun.jini.config.ConfigUtil;
 
import net.jini.core.discovery.LookupLocator;
import net.jini.core.lookup.ServiceRegistrar;
import net.jini.core.lookup.ServiceTemplate;
 
/**
 * Jini计算器客户
 */
public class CalculatorClient {
 
	private ServiceTemplate serviceTemplate;
	private ServiceRegistrar serviceRegistrar;
	private Calculator serviceItem;
 
	public CalculatorClient() throws IOException {
		try {
			initializeSecurityManager();
			initializeServiceRegister();
			initializeServiceTemplate();
			searchServiceItem();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
	// 设置安全管理器
	private void initializeSecurityManager() {
		if (System.getSecurityManager() == null) {
			System.setSecurityManager(new RMISecurityManager());
		}
	}
 
	// 定位Jini查找服务
	private void initializeServiceRegister()
		throws MalformedURLException, ClassNotFoundException, IOException {
		LookupLocator locator =
			new LookupLocator("jini://" + ConfigUtil.getHostName());
		serviceRegistrar = locator.getRegistrar();
	}
 
	// 设置服务搜索模板 
	private void initializeServiceTemplate() {
		Class[] types = new Class[] { Calculator.class };
		serviceTemplate = new ServiceTemplate(null, types, null);
	}
 
	// 搜索服务 
	private void searchServiceItem() throws RemoteException {
		serviceItem = (Calculator) serviceRegistrar.lookup(serviceTemplate);
	}
 
	public static void main(String[] args) {
		try {
			CalculatorClient calculator = new CalculatorClient();
			CalculatorFrame frame = calculator.new CalculatorFrame();
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			frame.show();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
	class CalculatorFrame extends JFrame {
		public static final int WIDTH = 350;
		public static final int HEIGHT = 200;
		public static final String TITLE = "Jini Calculator";
 
		private JLabel operand1Label;
		private JLabel operand2Label;
		private JLabel operatorLabel;
		private JLabel resultLabel;
		private JTextField operand1TextField;
		private JTextField operand2TextField;
		private JTextField resultTextField;
		private JComboBox operatorComboBox;
		private JButton calculateButton;
 
		public CalculatorFrame() {
			initializeUI();
		}
 
		// 构造用户界面
		private void initializeUI() {
 
			setTitle(TITLE);
			setSize(WIDTH, HEIGHT);
			Container contentPane = getContentPane();
			contentPane.setLayout(null);
 
			operand1Label = new JLabel("Operand 1", SwingConstants.CENTER);
			operand1Label.setBounds(20, 20, 100, 20);
			operand1TextField = new JTextField("", 1);
			operand1TextField.setBounds(20, 50, 100, 20);
 
			operatorLabel = new JLabel("Operator", SwingConstants.CENTER);
			operatorLabel.setBounds(120, 20, 100, 20);
			operatorComboBox = new JComboBox();
			operatorComboBox.addItem("  + ");
			operatorComboBox.addItem("  - ");
			operatorComboBox.addItem("  * ");
			operatorComboBox.addItem("  / ");
			operatorComboBox.setBounds(145, 50, 50, 20);
 
			operand2Label = new JLabel("Operand 2", SwingConstants.CENTER);
			operand2Label.setBounds(220, 20, 100, 20);
			operand2TextField = new JTextField("", 1);
			operand2TextField.setBounds(220, 50, 100, 20);
 
			calculateButton = new JButton("Calculate");
			calculateButton.setBounds(20, 100, 100, 20);
			calculateButton.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					compute();
				}
			});
 
			resultLabel = new JLabel("Result:", SwingConstants.CENTER);
			resultLabel.setBounds(120, 100, 100, 20);
			resultTextField = new JTextField("", 1);
			resultTextField.setBounds(220, 100, 100, 20);
			resultTextField.setEditable(false);
 
			contentPane.add(operand1Label);
			contentPane.add(operand1TextField);
			contentPane.add(operatorLabel);
			contentPane.add(operatorComboBox);
			contentPane.add(operand2Label);
			contentPane.add(operand2TextField);
			contentPane.add(calculateButton);
			contentPane.add(resultLabel);
			contentPane.add(resultTextField);
		}
 
		// 调用Jini服务完成计算
		private void compute() {
			double operand1, operand2, result;
			if (operand1TextField.getText().length() > 0) {
				operand1 = Double.parseDouble(operand1TextField.getText());
			} else {
				operand1 = 0.0;
			}
			if (operand2TextField.getText().length() > 0) {
				operand2 = Double.parseDouble(operand2TextField.getText());
			} else {
				operand2 = 0.0;
			}
			try {
				switch (operatorComboBox.getSelectedIndex()) {
					case 0 :
						result = serviceItem.add(operand1, operand2);
						resultTextField.setText(String.valueOf(result));
						break;
					case 1 :
						result = serviceItem.subtract(operand1, operand2);
						resultTextField.setText(String.valueOf(result));
						break;
					case 2 :
						result = serviceItem.multiply(operand1, operand2);
						resultTextField.setText(String.valueOf(result));
						break;
					case 3 :
						result = serviceItem.divide(operand1, operand2);
						resultTextField.setText(String.valueOf(result));
						break;
 
				}
			} catch (RemoteException ex) {
				ex.printStackTrace();
			}
		}
 
	}
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -