簡體   English   中英

按鈕無法繪制具有坐標(x1,x2,y1,y2)的折線圖

[英]Button not working to draw line graph having its coordinate (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                   
}

這是因為jButtonPlotActionPerformed方法只是將temp變量設置為true。 沒有其他的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM