import javax.swing.JButton; //导入方法依赖的package包/类
/**
* Adds calculator function buttons on given panel.
*
* @param p
* Panel.
*/
private void addFunctionButtons(JPanel p) {
ActionListener execOperation = e -> {
JButton button = (JButton) e.getSource();
String buttonName = button.getText();
UnaryOperation operation = getUnaryOperation(buttonName);
double value = Double.parseDouble(display.getText());
double result = executeUnaryOperation(operation, value);
display.setText(Double.toString(result));
};
ActionListener xPownOp = e -> {
executeBinaryOperation(new PownOperation());
};
JButton invx = createButton("1/x");
invx.addActionListener(execOperation);
JButton xpown = createButton("x^n");
xpown.addActionListener(xPownOp);
JButton sine = createButton("sin");
sine.addActionListener(execOperation);
JButton log = createButton("log");
log.addActionListener(execOperation);
JButton cosine = createButton("cos");
cosine.addActionListener(execOperation);
JButton ln = createButton("ln");
ln.addActionListener(execOperation);
JButton tan = createButton("tan");
tan.addActionListener(execOperation);
JButton ctg = createButton("ctg");
ctg.addActionListener(execOperation);
p.add(invx, new RCPosition(2, 1));
p.add(sine, new RCPosition(2, 2));
p.add(log, new RCPosition(3, 1));
p.add(cosine, new RCPosition(3, 2));
p.add(ln, new RCPosition(4, 1));
p.add(tan, new RCPosition(4, 2));
p.add(xpown, new RCPosition(5, 1));
p.add(ctg, new RCPosition(5, 2));
}