Here i post the full example code:
this is the main class of the project:
Frame.java
package drawer;
import java.awt.Point;
public class Frame extends javax.swing.JFrame {
/** Creates new form Frame */
public Frame() {
drawer = new Drawer();
init();
}
/*this is the init component modified by me to add the drawer object to the panel*/
private void init(){
panel = new javax.swing.JPanel();
addButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
yField = new javax.swing.JTextField();
xField = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
panel.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));
panel.setPreferredSize(new java.awt.Dimension(300, 200));
org.jdesktop.layout.GroupLayout panelLayout = new org.jdesktop.layout.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 298, Short.MAX_VALUE)
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 198, Short.MAX_VALUE)
);
addButton.setText("Add");
addButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
addButtonMouseClicked(evt);
}
});
jLabel1.setText("X");
jLabel2.setText("Y");
yField.setText("int y");
yField.setPreferredSize(new java.awt.Dimension(75, 22));
xField.setText("int x");
xField.setPreferredSize(new java.awt.Dimension(75, 22));
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(panel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(layout.createSequentialGroup()
.add(35, 35, 35)
.add(jLabel1)
.add(96, 96, 96)
.add(jLabel2)))
.add(20, 20, 20))
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.add(xField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 30, Short.MAX_VALUE)
.add(yField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(addButton)
.add(95, 95, 95))))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(panel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 24, Short.MAX_VALUE)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel1)
.add(jLabel2))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(addButton)
.add(yField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(xField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(12, 12, 12))
);
/*Here i add the drawer object to the panel*/
panel.add(drawer);
/*i revalidate and repaint the panel*/
panel.revalidate();
panel.repaint();
/*validation of the frame*/
this.validate();
this.pack();
}
/*This method handles the insertion of new points on the Graph*/
private void addButtonMouseClicked(java.awt.event.MouseEvent evt) {
Point p;
int x = 0,y = 0;
x = Integer.parseInt(xField.getText());
y = Integer.parseInt(yField.getText());
p = new Point(x,y);
System.out.println(p.toString());
drawer.addPoint(p);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Frame frame;
frame = new Frame();
frame.setResizable(false);
frame.setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton addButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel panel;
private javax.swing.JTextField xField;
private javax.swing.JTextField yField;
// End of variables declaration
private Drawer drawer;
}
here there's the other class of the project:
the task of this class is painting the graph.
you can try separately by uncommenting the main.
Drawer.java
package drawer;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.lang.Thread;
public class Drawer extends JPanel{
LinkedList<Point> pointList;
Graphics g;
public Drawer(){
pointList = new LinkedList<Point>();
setPreferredSize(new Dimension(290,190));
setBackground(Color.WHITE);
/*to be used if this class is used as a stand alone application*/
//pointList.add(new Point(0,0));
//pointList.add(new Point(30,50));
//pointList.add(new Point(50,150));
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLACK);
Point start, end;
//System.out.println(pointList.size());
start = (Point)pointList.get(0);
for(int i=1;i<pointList.size();i++){
end = (Point)pointList.get(i);
//System.out.println("Start: "+start.toString()+"\tEnd: "+end.toString());
g.drawLine(start.x,290-start.y,end.x,190-end.y);
start = end;
}
}
/*this method is called only if you use this class as stand alone application*/
public void addItems(){
pointList.add(new Point(70,255));
pointList.add(new Point(70,352));
pointList.add(new Point(80,255));
pointList.add(new Point(110,255));
repaint();
}
public void addPoint(Point p){
pointList.add(p);
System.out.println("Successfully added point:"+p.toString()+"to the pointList");
repaint();
}
/*
public static void main(String[] args){
JFrame frame = new JFrame("Line drawer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Drawer d= new Drawer();
frame.getContentPane().add(d);
frame.setResizable(false);
frame.pack();
frame.setVisible(true);
Thread t = new Thread();
try{
t.sleep(3000);
}
catch(Exception e){}
d.addItems();
}
*/
}
hope this clarify the problem.
thanks in advance.
sorry camickr, i clicked on the wrong forum but i hope this will be the last question on this problem.
thanks everyone!>