Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Calculating and displaying the Length of the side of a triangle

843807Dec 5 2004 — edited Jan 12 2005
Hi everyone. I am currently working on Dragging and Stretching a triangle on screen. Ive got it working to a certain extent but the only problem is that whenever I go to the point from which i have to drag my triangle i.e. the Left hand Corner of the BAse at exactly 300,300 it redraws a new triangle below the existing one and then when i stretch it from the top and the right it leaves a trail of triangles everytime. But when i resize my window it clears the trail only to start agian when I drag or stretch it...
All my code for wahtever I have done is displayed below. I would appreciate all the help that any one can offer.
Secondly , as I stretch my triangle I would like to calculate My Length of the hypotenuse and the other 2 sides as they change and display it in System.out.println for now...

PLEASE HELP
the code is
This is my Main Form --- Interactive Geometry.java
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;

/*
 * InteractiveGeometry.java
 *
 * Created on 30 November 2004, 20:29
 */

/**
 *
 * @author  Kripa Bhojwani
 */
public class InteractiveGeometry extends javax.swing.JFrame {
    public EastPanel eastpanel;
    public Container container;
    public GeomPanel gp;
    public boolean pressed = false;
    
    public boolean pressT = false;
    
    public boolean pressR = false;
    /** Creates new form InteractiveGeometry */
    public InteractiveGeometry() {
        initComponents();
        eastpanel = new EastPanel();
        container = new Container();
        Model model = new Model(300,150,450,300,300,300);
        
        gp = new GeomPanel(model);
        
        container = getContentPane();
        
        
        container.add(eastpanel,BorderLayout.EAST);
        container.add(gp,BorderLayout.CENTER);
        setSize(1400,9950);
        gp.addMouseMotionListener(
        new MouseMotionListener() { //anonymous inner class
            //handle mouse drag event
            public void mouseDragged(MouseEvent me) {
                
                setTitle("Dragging: x=" + me.getX() + "; y=" + me.getY());
                
            }
            public void mouseMoved(MouseEvent me) {
                setTitle("Moving: x=" + me.getX() + "; y=" + me.getY());
                
            }
        }
        );
        
    }
    
    /** 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.
     */
    private void initComponents() {
        jMenuBar2 = new javax.swing.JMenuBar();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();

        addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                formMouseDragged(evt);
            }
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                formMouseMoved(evt);
            }
        });
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jMenuBar2.setBackground(new java.awt.Color(0, 102, 204));
        jMenu2.setBackground(new java.awt.Color(222, 222, 238));
        jMenu2.setText("File");
        jMenu2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu2ActionPerformed(evt);
            }
        });

        jMenuItem1.setBackground(new java.awt.Color(204, 255, 255));
        jMenuItem1.setText("Exit");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });

        jMenu2.add(jMenuItem1);

        jMenuBar2.add(jMenu2);

        jMenu1.setBackground(new java.awt.Color(199, 215, 255));
        jMenu1.setText("Theorem ");
        jMenuItem2.setText("Pythagoras Theorem");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem2);

        jMenuBar2.add(jMenu1);

        setJMenuBar(jMenuBar2);

        pack();
    }

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        
    }
    
    private void formMouseDragged(java.awt.event.MouseEvent evt) {
        // TODO add your handling code here:
    }
    
    private void formMouseMoved(java.awt.event.MouseEvent evt) {
        // TODO add your handling code here:
    }
    
    
    public void mouseDragged(MouseEvent me) {
        setTitle("Dragging: x=" + me.getX() + "; y=" + me.getY());
        
    }
    private void jMenu2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }
    
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        System.exit(0);
        
    }
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        InteractiveGeometry ig = new InteractiveGeometry();
        ig.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ig.show();
        // new InteractiveGeometry().show();
        
    }
    
    // Variables declaration - do not modify
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar2;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    // End of variables declaration
    
}

This is my Panel -- GeomPanel.java which draws everything -- 
/*
* GeomPanel.java
*
* Created on 30 November 2004, 20:29
*/
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.Graphics.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.event.*;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import javax.swing.event.TableModelListener;
import javax.swing.JScrollPane;
import javax.swing.event.*;
import java.awt.Dimension;
import java.awt.Container.*;
/**
*
* @author Kripa Bhojwani
*/
public class GeomPanel extends javax.swing.JPanel implements Observer, MouseMotionListener, MouseListener {

private Model model;
private boolean pressed = false;
private boolean pressT = false;
private boolean pressR = false;
/** Creates new form GeomPanel */
public GeomPanel(Model model) {



this.model = model;

model.addObserver(this);
addMouseListener(this);
addMouseMotionListener(this);
initComponents();

setBackground(Color.getHSBColor(6,600,660));
}

public void paintComponent(Graphics gfx) {
Graphics2D g = (Graphics2D) gfx;
Point tc = model.getTop();
Point lc = model.getLeft();
Point rc = model.getRight();

Point2D.Double p1 = new Point2D.Double(tc.getX(),tc.getY());
Point2D.Double p2 = new Point2D.Double(lc.getX(),lc.getY());
Point2D.Double p3 = new Point2D.Double(rc.getX(),rc.getY());
Line2D.Double line = new Line2D.Double(p1, p2);
Line2D.Double line1 = new Line2D.Double(p2, p3);
Line2D.Double line2 = new Line2D.Double(p1, p3);

g.setColor(Color.BLACK);

g.draw(line);
g.draw(line2);
g.draw(line1);
}
/** 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.
*/
private void initComponents() {

setLayout(new java.awt.BorderLayout());

addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
formMouseDragged(evt);
}
});

}

private void formMouseDragged(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:

}

public void mouseClicked(MouseEvent e) {
}

public void mouseDragged(MouseEvent e) {
System.out.println("Dragged at "+ e.getX()+ "," + e.getY());
if(pressed == true){
model.setLeft(e.getX() , e.getY());

}
else if(pressT == true){
model.setTop(e.getX() , e.getY());

}
else if (pressR == true){
model.setRight(e.getX(), e.getY());

}

else{
pressed = false;
pressT= false;
pressR=false;

}
repaint();
}

public void mouseEntered(MouseEvent e) {
}

public void mouseExited(MouseEvent e) {
}

public void mouseMoved(MouseEvent e) {
System.out.println("Mouse at " + e.getX() +"," + e.getY());
}

public void mousePressed(MouseEvent e) {
if (model.getLeft().getX()== e.getX() && model.getLeft().getY()== e.getY()){
pressed = true;

}
else if (model.getTop().getX()==e.getX() && model.getTop().getY()==e.getY()){
pressT = true;
}
else if(model.getRight().getX() == e.getX() && model.getRight().getY()==e.getY()){
pressR = true;

}

// else if(model.getCircle().getX() == e.getX() && model.getCircle().getY() == e.getY()){
// inoval = true;
//
// }
else {

pressed =false;
pressT = false;
pressR = false;
} repaint();
}
public void mouseReleased(MouseEvent e) {
if(pressed == true){
model.setLeft(e.getX(),e.getY());
}
else if (pressT ==true ){
model.setTop(e.getX(), e.getY());
}
else if(pressR ==true){
model.setRight(e.getX(),e.getY());
}

else {
pressed = false;
pressT = false;
pressR = false;


}
repaint();
}

public void update(Observable o, Object arg) {
repaint();
}

// Variables declaration - do not modify
// End of variables declaration

}

This is my Model class called Model.java which Holds all teh data for my triangle
import java.awt.Point;
import java.util.Observable;

/*
 * Model.java
 *
 * Created on 05 December 2004, 14:11
 */

/**
 *
 * @author  Kripa Bhojwani
 */
public class Model extends Observable{
    private int  x1,x2,x3, y1,y2,y3;
    private int _transx;
    private int _transy;
    private int _c;
    private int _d;
    /** Creates a new instance of Model */
    public Model(int x1, int y1, int x2, int y2, int x3, int y3) {
        
        
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
        this.x3 = x3;
        this.y3 = y3;
        
        setChanged();
        notifyObservers();
    }
    public void setTop(int x1, int y1){
        //this.x1 =x1;
        this.y1= y1;
        setChanged();
        notifyObservers();
    }
    
    public void setRight(int x2, int y2){
        
        this.x2 = x2;
        // this.y2 =y2;
        setChanged();
        notifyObservers();
    }
    public void setLeft(int x3, int y3){
        _transx = x3 - this.x3;
        _transy = y3 - this.y3;
        
        this.x3 += _transx;
        this.y3 += _transy;
        this.y2 += _transy;
        this.x2 += _transx;
        this.x1 += _transx;
        this.y1 += _transy;
        
        setChanged();
        notifyObservers();
    }
    public Point getTop(){
        Point p = new Point(x1,y1);
        return p;
    }
    
    public Point getRight(){
        
        Point p1 = new Point(x2,y2);
        return p1;
        
    }
    
    public Point getLeft(){
        Point p3 = new Point(x3,y3);
        return p3;
    }
    public void update() {
        setChanged();
        notifyObservers();
    }
}

This is my TableModel which is the JTable to display all the Cordinates and Lengths and other Measurements like angles etc.
/*
* TableModel.java
*
* Created on 03 December 2004, 15:08
*/
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
import java.util.Observer;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;

/**
*
* @author Kripa Bhojwani
*/
public class TableModel extends AbstractTableModel implements Observer{
private String[] columnNames = {"Point", "X Coordinate", "Y Coordinate"};
private Object[][] data = {};
private int rowCount;
private int columnCount;
/** Creates a new instance of TableModel */
public TableModel() {
rowCount = 0;
columnCount = 3;
}

public int getColumnCount() {
return columnCount;

}

public int getRowCount() {
return rowCount;
}


public String getColumnName(int col) {
return columnNames[col];
}
public void setColumnName (String[] name){
columnNames = name;

}

public void setValueAt(Object obj, int row, int col) {
data[row][col] = obj;
fireTableCellUpdated(row, col);
TableModelEvent tme = new TableModelEvent(this);
fireTableChanged(tme);
}
public Object getValueAt(int row, int col) {
return data[row][col];
}

public void update(java.util.Observable o, Object arg) {
}

}




This is the Panel on the east side of My Main application form which will display all the measurements and Cordinates ---EastPanel.java
import java.awt.BorderLayout;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelListener;
import java.awt.Dimension;
/*
 * EastPanel.java
 *
 * Created on 04 December 2004, 23:07
 */

/**
 *
 * @author  Kripa Bhojwani
 */
public class EastPanel extends javax.swing.JPanel implements TableModelListener{
    private TableModel tm;
    
    /** Creates new form EastPanel */
    public EastPanel() {    
      initComponents();
        tm = new TableModel();
        JTable table1 = new JTable(tm);
        table1.setPreferredScrollableViewportSize(new Dimension(250,264));
        table1.getModel().addTableModelListener(this);
        JScrollPane sp = new JScrollPane(table1);
        add(sp,BorderLayout.EAST);
        
        
      
    }
    
    /** 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.
     */
    private void initComponents() {

        setLayout(new java.awt.BorderLayout());

    }
    
    public void tableChanged(javax.swing.event.TableModelEvent e) {
    }
    
    
    // Variables declaration - do not modify
    // End of variables declaration
    
}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 9 2005
Added on Dec 5 2004
4 comments
258 views