📄 calframe.java
字号:
pack();
}// </editor-fold>
private void Domain1ActionPerformed(java.awt.event.ActionEvent evt) {
// Domain1:
}
private void ParameterActionPerformed(java.awt.event.ActionEvent evt) {
// Parameter:
parameter = this.Parameter.getText();
}
private void GenerateActionPerformed(java.awt.event.ActionEvent evt) {
// Generate:
double result = 0.0;
String output = "";
expression = new Evaluation(this.Expression.getText());
//Evaluation temp = expression;
try {
result = expression.Evaluate();
var = expression.showVar();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "The input is invalid",
"warning", JOptionPane.WARNING_MESSAGE);
return;
}
if (var.size() == 0) {
JOptionPane.showMessageDialog(null, "There is no variable\n" + "The result is " + result,
"warning", JOptionPane.WARNING_MESSAGE);
} else {
//System.out.print(var);
for (int i = 0; i < var.size(); i++) {
if (!var.get(i).equals(parameter)) {
output += "(" + var.get(i) + "= )";
}
}
this.VarSet.setText(output);
}
}
private void DrawActionPerformed(java.awt.event.ActionEvent evt) {
// Draw:
if ((startPoint - endPoint) >= 0) {
JOptionPane.showMessageDialog(null, "The domain is in valid",
"warning", JOptionPane.WARNING_MESSAGE);
return;
}
g = this.GraphArea.getGraphics();
paintComponents(g);
}
private void Domain2ActionPerformed(java.awt.event.ActionEvent evt) {
// Domain2:
}
private void ExpressionActionPerformed(java.awt.event.ActionEvent evt) {
// Expression:
}
private void ParameterFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
parameter = this.Parameter.getText();
}
private void Domain1FocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
try {
startPoint = Double.parseDouble(this.Domain1.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "The domain is in valid",
"warning", JOptionPane.WARNING_MESSAGE);
this.Domain1.setText("");
return;
}
}
private void Domain2FocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
try {
endPoint = Double.parseDouble(this.Domain2.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "The domain is in valid",
"warning", JOptionPane.WARNING_MESSAGE);
return;
}
}
private void ExpressionFocusGained(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
// this.Expression.setText("");
// this.Parameter.setText("");
// this.VarSet.setText("");
// this.Domain1.setText("");
// this.Domain2.setText("");
}
private void ExpressionFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
expression = new Evaluation(this.Expression.getText());
}
private void VarSetActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:\
}
private void VarSetFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
Vector<String> vc = new Vector();
String input = this.VarSet.getText();
StringTokenizer token = new StringTokenizer(input, "()= ", false);
while (token.hasMoreTokens()) {
vc.add(token.nextToken());
}
if (vc.size() % 2 == 1) {
JOptionPane.showMessageDialog(null, "The Variable Set is invalid",
"warning", JOptionPane.WARNING_MESSAGE);
return;
} else {
try {
for (int i = 0; i < vc.size() - 1; i += 2) {
expression.getArgSet().setArg((String) vc.get(i), Double.parseDouble((String) vc.get(i + 1)));
System.out.print(expression.getArgSet().getArg((String) vc.get(i)));
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "The Variable Set is invalid",
"warning", JOptionPane.WARNING_MESSAGE);
return;
}
}
}
/**
* @param args the command line arguments */
@Override
public void paintComponents(Graphics g) {
super.paintComponents(g);
this.GraphArea.paint(g);
int xCenter = this.GraphArea.getWidth() / 2;
int yCenter = this.GraphArea.getHeight() / 2;
g.drawLine(10, yCenter, xCenter*2 - 10, yCenter);
g.drawString("(0,0)", xCenter, yCenter);
g.drawLine(xCenter*2 - 10, yCenter, xCenter*2 - 15, yCenter + 5);
g.drawLine(xCenter*2 - 10, yCenter, xCenter*2 - 15, yCenter - 5);
g.drawLine(xCenter, 10, xCenter, yCenter*2 - 10);
g.drawLine(xCenter, 10, xCenter + 5, 15);
g.drawLine(xCenter, 10, xCenter - 5, 15);
double range1 = this.getRange(startPoint);
double range2 = this.getRange(endPoint);
double rangeX = Math.max(Math.abs(startPoint), Math.abs(endPoint));
double rangeY = Math.max(Math.abs(range1), Math.abs(range2));
for (int i = 0; i < 5000; i++) {
rangeY = Math.max(rangeY, Math.abs(getRange(startPoint + i * (endPoint - startPoint)/4999)));
}
g.drawLine(xCenter, 10, xCenter + 5, 15);
g.drawString(""+startPoint , (int)(xCenter + startPoint/rangeX*(xCenter-20)) , yCenter+10 );
g.drawLine((int)(xCenter + startPoint/rangeX*(xCenter-20)) , yCenter , (int)(xCenter + startPoint/rangeX*(xCenter-20)), yCenter-5);
g.drawString(""+endPoint , (int)(xCenter + endPoint/rangeX*(xCenter-20)),yCenter+10);
g.drawLine((int)(xCenter + endPoint/rangeX*(xCenter-20)) , yCenter , (int)(xCenter + endPoint/rangeX*(xCenter-20)), yCenter-5);
g.drawString(""+ format(getRange(startPoint)) , xCenter-20 , (int)(yCenter-getRange(startPoint/rangeY * (yCenter-20))));
g.drawLine( xCenter , (int)(yCenter-getRange(startPoint)/rangeY * (yCenter-20)) ,
xCenter+5,(int)(yCenter-getRange(startPoint)/rangeY * (yCenter-20)));
g.drawString(""+ format(getRange(endPoint)) , xCenter-20 , (int)(yCenter-getRange(endPoint)/rangeY * (yCenter-20)));
g.drawLine( xCenter , (int)(yCenter-getRange(endPoint)/rangeY * (yCenter-20)) ,
xCenter+5,(int)(yCenter-getRange(endPoint)/rangeY * (yCenter-20)));
g.drawString(""+ format(rangeY),xCenter-20 , 20);
g.drawLine( xCenter , 20 , xCenter+15, 20 );
g.drawString(""+ format(-rangeY),xCenter-20 , yCenter*2-40);
g.drawLine( xCenter , yCenter*2-40 , xCenter+15, yCenter*2-40 );
int[] x = new int[5000];
int[] y = new int[5000];
for (int i = 0; i < 5000; i++) {
x[i] = (int) (xCenter + (startPoint + i * (endPoint - startPoint) / 4999.0) / rangeX * (xCenter-20));
}
for (int i = 0; i < 5000; i++) {
y[i] = (int) (yCenter - getRange(startPoint + i * (endPoint - startPoint) / 4999.0) / rangeY * (yCenter-20));
}
g.drawPolyline(x, y, 5000);
//g.drawPolyline(p.xpoints , p.ypoints, p.npoints);
}
private double format(double x){
double i = (int)(x*100);
return i/100;
}
private double getRange(double value) {
try {
expression.getArgSet().setArg(parameter, value);
// System.out.println(expression.getArg().getArg(parameter));
// System.out.println(expression.Evaluate());
return expression.Evaluate();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "There is an error occuring when evaluating",
"warning", JOptionPane.WARNING_MESSAGE);
}
return 0.0;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new CalFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTextField Domain1;
private javax.swing.JTextField Domain2;
private javax.swing.JButton Draw;
private javax.swing.JTextField Expression;
private javax.swing.JButton Generate;
private javax.swing.JPanel GraphArea;
private javax.swing.JTextField Parameter;
private javax.swing.JTextField VarSet;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JPanel jPanel2;
// End of variables declaration
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -