📄 calculatorclient.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 + -