0
我在显示线图时遇到了麻烦。当我按下“Plot”按钮时,没有任何反应。按钮无法绘制其坐标(x1,x2,y1,y2)的线图
如何解决这个问题?
package linecalculate;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.Stroke;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
/**
*
* @author HuynhNgocTan
*/
public class main extends javax.swing.JFrame {
boolean temp = false;
/**
* Creates new form main
*/
public main() {
setTitle("HuynhNgocTan - line");
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabelX1 = new javax.swing.JLabel();
jLabelY1 = new javax.swing.JLabel();
jLabelX2 = new javax.swing.JLabel();
jLabelY2 = new javax.swing.JLabel();
jLabelSlope = new javax.swing.JLabel();
jLabelDistance = new javax.swing.JLabel();
jLabelAnglerad = new javax.swing.JLabel();
jLabelAngledeg = new javax.swing.JLabel();
jLabelEquation = new javax.swing.JLabel();
jTextFieldSlope = new javax.swing.JTextField();
jTextFieldDistance = new javax.swing.JTextField();
jTextFieldAnglerad = new javax.swing.JTextField();
jTextFieldAngledeg = new javax.swing.JTextField();
jTextFieldEquation = new javax.swing.JTextField();
jButtonCalculate = new javax.swing.JButton();
jButtonPlot = new javax.swing.JButton();
jTextFieldX1 = new javax.swing.JTextField();
jTextFieldY2 = new javax.swing.JTextField();
jTextFieldX2 = new javax.swing.JTextField();
jTextFieldY1 = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
jPanelDraw = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabelX1.setText("X1");
jLabelY1.setText("Y1");
jLabelX2.setText("X2");
jLabelY2.setText("Y2");
jLabelSlope.setText("Slope");
jLabelDistance.setText("Distance between points");
jLabelAnglerad.setText("Angle (rad)");
jLabelAngledeg.setText("Angle (deg)");
jLabelEquation.setText("Equation of the line");
jButtonCalculate.setText("Calculate");
jButtonCalculate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonCalculateActionPerformed(evt);
}
});
jButtonPlot.setText("Plot");
jButtonPlot.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonPlotActionPerformed(evt);
}
});
jLabel10.setFont(new java.awt.Font("Tahoma", 1, 13)); // NOI18N
jLabel10.setForeground(new java.awt.Color(0, 51, 255));
jLabel10.setText("Line Calculation - version 1.0");
javax.swing.GroupLayout jPanelDrawLayout = new javax.swing.GroupLayout(jPanelDraw);
jPanelDraw.setLayout(jPanelDrawLayout);
jPanelDrawLayout.setHorizontalGroup(
jPanelDrawLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 384, Short.MAX_VALUE)
);
jPanelDrawLayout.setVerticalGroup(
jPanelDrawLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelSlope)
.addGap(18, 18, 18)
.addComponent(jTextFieldSlope, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelAnglerad)
.addGap(18, 18, 18)
.addComponent(jTextFieldAnglerad, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelX2)
.addGap(18, 18, 18)
.addComponent(jTextFieldX2, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelX1)
.addGap(18, 18, 18)
.addComponent(jTextFieldX1, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelY2)
.addGap(18, 18, 18)
.addComponent(jTextFieldY2, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelY1)
.addGap(18, 18, 18)
.addComponent(jTextFieldY1, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelDistance)
.addGap(18, 18, 18)
.addComponent(jTextFieldDistance, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelAngledeg)
.addGap(18, 18, 18)
.addComponent(jTextFieldAngledeg, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 65, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanelDraw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelEquation)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(jTextFieldEquation, javax.swing.GroupLayout.PREFERRED_SIZE, 267, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(7, 7, 7)
.addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addGap(21, 21, 21))))
.addGroup(layout.createSequentialGroup()
.addGap(131, 131, 131)
.addComponent(jButtonCalculate)
.addGap(92, 92, 92)
.addComponent(jButtonPlot)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap(61, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(8, 8, 8)
.addComponent(jLabel10)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelX1)
.addComponent(jLabelY1)
.addComponent(jTextFieldX1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextFieldY1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelX2)
.addComponent(jLabelY2)
.addComponent(jTextFieldY2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextFieldX2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(15, 15, 15)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelSlope)
.addComponent(jLabelDistance)
.addComponent(jTextFieldSlope, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextFieldDistance, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelAnglerad)
.addComponent(jLabelAngledeg)
.addComponent(jTextFieldAnglerad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextFieldAngledeg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(26, 26, 26)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelEquation)
.addComponent(jTextFieldEquation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonCalculate)
.addComponent(jButtonPlot))
.addGap(18, 18, 18)
.addComponent(jPanelDraw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(46, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
public boolean isNumeric(String str)
{
try
{
Double.parseDouble(str);
}
catch(Exception e)
{
return (false);
}
return(true);
}
public double Round(double val, int plc)
{
double pwr = Math.pow(10,plc);
val = val * pwr;
double tmp = (int) val;
if(((int)(val + .5)) == (int) val)
return (tmp/pwr);
else
return((tmp + 1.0)/pwr);
}
private void jButtonCalculateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here
double x1;
double x2;
double y1;
double y2;
double length_of_x;
double length_of_y;
double slope;
double opposite;
double angle_degrees;
double angle_radians;
double y_intercept;
double distance_between_2_points;
x1 = (double) (Double.parseDouble(jTextFieldX1.getText()));
x2 = (double) (Double.parseDouble(jTextFieldX2.getText()));
y1 = (double) (Double.parseDouble(jTextFieldY1.getText()));
y2 = (double) (Double.parseDouble(jTextFieldY2.getText()));
length_of_x = x2 - x1;
length_of_y = y2 - y1;
slope = length_of_y/length_of_x;
slope = (double) Round(slope,2);
opposite = y2 - y1;
distance_between_2_points = Math.sqrt((length_of_x * length_of_x) + (length_of_y * length_of_y));
distance_between_2_points = (double) Round(distance_between_2_points,2);
angle_radians = opposite/distance_between_2_points;
angle_radians = (double) Round(angle_radians,2);
angle_degrees = angle_radians * (180/3.14159);
angle_degrees = (double) Round(angle_degrees,2);
y_intercept = (double) slope*(-x1)+y1;
jTextFieldSlope.setText(slope + "");
jTextFieldDistance.setText(distance_between_2_points + "");
jTextFieldAnglerad.setText(angle_radians + "");
jTextFieldAngledeg.setText(angle_degrees + "");
jTextFieldEquation.setText("Y = " + slope + "" + "X + (" + y_intercept + ")");
}
private void jButtonPlotActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
temp=true;
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new main().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButtonCalculate;
private javax.swing.JButton jButtonPlot;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabelAngledeg;
private javax.swing.JLabel jLabelAnglerad;
private javax.swing.JLabel jLabelDistance;
private javax.swing.JLabel jLabelEquation;
private javax.swing.JLabel jLabelSlope;
private javax.swing.JLabel jLabelX1;
private javax.swing.JLabel jLabelX2;
private javax.swing.JLabel jLabelY1;
private javax.swing.JLabel jLabelY2;
private javax.swing.JPanel jPanelDraw;
private javax.swing.JTextField jTextFieldAngledeg;
private javax.swing.JTextField jTextFieldAnglerad;
private javax.swing.JTextField jTextFieldDistance;
private javax.swing.JTextField jTextFieldEquation;
private javax.swing.JTextField jTextFieldSlope;
private javax.swing.JTextField jTextFieldX1;
private javax.swing.JTextField jTextFieldX2;
private javax.swing.JTextField jTextFieldY1;
private javax.swing.JTextField jTextFieldY2;
// End of variables declaration
}
你期望它做什么? – 2014-10-22 12:27:14