Change buttons to a limited frame movement
Hi All,
I want to affect changes in the size of a octagon
drawn and related text size using a different method.
The program below is near what I want in that the button
clicks now resize the image drawn. I want to replace the
buttons with a detectable amount of movement in
resizing the frame then resizes the image and text size.
Do not know how to do this.
TIA
bH
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ShowAPolygon extends JFrame implements
ActionListener {
private JButton drawLgrBtn = new JButton("Draw Lgr");
private JButton drawSmrBtn = new JButton("Draw Smlr");
private JButton closeBtn = new JButton("Close");
private JPanel btnPanel = new JPanel();
private int fontSize = 12;//Message Font size
private String msgStr = "Stop Sign Polygon";
private static final int width = 300;// frame width
private static final int height = 320;;// frame height
int xPosition = 150;// repostions drawing x values
int yPosition = 200;// repostions drawing y values
int measureOfDiameter = 90; // image is drawn with circle
int measureIncreaseBy = 15; // image is dia is incrsd by amt
int measureDecreaseBy = 15; // image is dia is decrsd by amt
int numPoints = 8;// num points needed for a octagon
int[] xPoints = new int [numPoints];// array stores x values
//for a
polygon
int[] yPoints = new int [numPoints];// array stores y values
//for a
polygon
ShowAPolygon(){
btnPanel.add(drawLgrBtn);
drawLgrBtn.addActionListener(this);
btnPanel.add(drawSmrBtn);
drawSmrBtn.addActionListener(this);
btnPanel.add(closeBtn);
closeBtn.addActionListener(this);
Container contentPane= getContentPane();
contentPane.add(btnPanel);
contentPane.setLayout( new GridLayout(1,1));
this. setSize(width,height);
this.setResizable(true);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == drawLgrBtn){
measureOfDiameter = measureOfDiameter +
measureIncreaseBy;
fontSize = fontSize + 1 ;
repaint();
}
if(e.getSource() == drawSmrBtn){
measureOfDiameter = measureOfDiameter -
measureDecreaseBy;
fontSize = fontSize - 1 ;
repaint();
}
if(e.getSource() == closeBtn){
System.exit(0);
}
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
Color rndm= new Color((int)(Math.random()*255),
(int)(Math.random()*255),(int)
(Math.random()*255));
g.setColor(rndm);
//calculating point locations
for (int n = 0; n <numPoints; n++) {
xPoints[n] = (int) (xPosition + measureOfDiameter *
Math.cos
((2 * Math.PI / numPoints) * (0.5
+n) ));
yPoints[n] = (int) (yPosition + measureOfDiameter*
Math.sin
((2 * Math.PI /numPoints) * (0.5
+ n) ));
}
g.fillPolygon(xPoints, yPoints, numPoints);
g.setColor(Color.black);//accents the shape visually
g.drawPolygon(xPoints, yPoints, numPoints);
//for message inside the polygon
g.setFont(new Font("Helvetica", 2, fontSize));
g.drawString(msgStr,100,200);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
ShowAPolygon sapg = new ShowAPolygon();
}
});
}
}