2014-10-22 93 views
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     
} 
+0

你期望它做什么? – 2014-10-22 12:27:14

回答

0

这是因为你jButtonPlotActionPerformed方法仅设置temp变量设置为true。没有其他的。

相关问题