View Single Post
  #2 (permalink)  
Old 01-31-2008, 02:42 AM
hardwired hardwired is offline
Senior Member
 
Join Date: Jul 2007
Posts: 1,189
hardwired is on a distinguished road
Code:
import java.awt.*; import java.awt.geom.*; import javax.swing.*; import javax.swing.event.*; public class Arrow extends JPanel implements ChangeListener { Path2D.Double arrow = createArrow(); double theta = 0; public void stateChanged(ChangeEvent e) { int value = ((JSlider)e.getSource()).getValue(); theta = Math.toRadians(value); repaint(); } protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); int cx = getWidth()/2; int cy = getHeight()/2; AffineTransform at = AffineTransform.getTranslateInstance(cx, cy); at.rotate(theta); at.scale(2.0, 2.0); Shape shape = at.createTransformedShape(arrow); g2.setPaint(Color.blue); g2.draw(shape); } private Path2D.Double createArrow() { int length = 80; int barb = 15; double angle = Math.toRadians(20); Path2D.Double path = new Path2D.Double(); path.moveTo(-length/2, 0); path.lineTo(length/2, 0); double x = length/2 - barb*Math.cos(angle); double y = barb*Math.sin(angle); path.lineTo(x, y); x = length/2 - barb*Math.cos(-angle); y = barb*Math.sin(-angle); path.moveTo(length/2, 0); path.lineTo(x, y); return path; } private JSlider getSlider() { JSlider slider = new JSlider(-180, 180, 0); slider.addChangeListener(this); return slider; } public static void main(String[] args) { Arrow test = new Arrow(); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(test); f.add(test.getSlider(), "Last"); f.setSize(400,400); f.setLocationRelativeTo(null); f.setVisible(true); } }
Reply With Quote