Dot Chart with selector
Class No.1
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class Main extends JFrame {
private Mypane contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main frame = new Main();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Main() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new Mypane();
//contentPane.addMouseMotionListener(new MouseMotionAdapter() {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
pack();
}
}
Class No.2
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
import java.util.Random;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Mypane extends JPanel {
//member variable
int x,y,h,w,sArc=0,eArc=360;
int x2,y2,h2,w2,sArc2=0,eArc2=360;
int xOfreal=0,yOfreal=0;
boolean clicked;
int X,Y;
ArrayList<Circle> list = new ArrayList<Circle>();
ArrayList<CirclePat> list2 = new ArrayList<CirclePat>();
public Mypane () {
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
h=40;
w=40;
x=e.getX();
y=e.getY();
}
});
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//if left button is pressed
if(e.getButton() == e.BUTTON1) {
for (int i = 0; i <list2.size(); i++) {
CirclePat cP= list2.get(i);
if (e.getX()<=cP.x && e.getY()<=cP.y )
{
Circle c = new Circle(cP.x,cP.y,h,w,Color.red);
System.out.println(e.getX() +" "+e.getY());
list.add(c);
repaint();
break;
}
}
}
//
else {
for (int i = 0; i <list2.size(); i++) {
CirclePat cP= list2.get(i);
if (e.getX()<=cP.x && e.getY()<=cP.y )
{
Circle c = new Circle(cP.x,cP.y,h,w,Color.YELLOW);
System.out.println(e.getX() +" "+e.getY());
list.add(c);
repaint();
break;
}
}
}
//
}
}
);
setPreferredSize(new Dimension(600, 600));
setLayout(null);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
// for the first line
g.drawLine(0,1,600,1);
// for horizontal line
for (int i = 60; i <=600; i=i+60) {
g.drawLine(0,i,600,i);
}
//for vertical line
for (int i = 60; i <=600; i=i+60) {
g.drawLine(i,0,i,600);
}
// for circles
for (int i = 10; i <=600; i=i+60) {
// for the vertical circles
//for horizontal circles
for (int i2 = 10; i2 <=600; i2=i2+60){
g.fillArc(i, i2, 40, 40, 0, 360);
CirclePat cP =new CirclePat(i,i2);
list2.add(cP);
}
}
// only for show
for (int i = 0; i < list2.size(); i++) {
CirclePat cP = list2.get(i);
System.out.println(cP.x + " "+cP.y) ;
}
// for selector
g.setColor(Color.RED);
g.fillArc(x, y, h, w, sArc, eArc);
g.drawRect(x-4, y-4, h+10, w+10);
repaint();
for (int i = 0; i < list.size(); i++) {
Circle c = list.get(i);
g.setColor(c.c);
g.fillArc(c.x, c.y, c.w, c.h, c.sArc, c.eArc);
}
}// ending of paint component method
}// ending of class
class Circle {
int x,y,h,w,sArc=0,eArc=360;
Color c;
boolean select;
Random R = new Random();
// random number for color shade
public Circle(int x, int y, int h, int w,Color c) {
super();
this.x = x;
this.y = y;
this.h = h;
this.w = w;
this.c=c;
this. select=false;
}
}
class CirclePat {
int x,y;
public CirclePat(int x, int y) {
super();
this.x = x;
this.y = y;
}
}
class rect{
int x,y,h,w,aa,aa2;
public rect(int x, int y, int h, int w,int aa,int aa2) {
super();
this.x = x;
this.y = y;
this.h = h;
this.w = w;
this.aa=aa;
this.aa2=aa2;
}
}
Comments
Post a Comment