Results 1 to 1 of 1
Thread: How to create a Ploygon Button
-
How to create a Ploygon Button
Java Code:import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Polygon; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseMotionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JApplet; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JToolTip; import javax.swing.Timer; public class PolygonButton extends JComponent implements MouseListener, MouseMotionListener { static public Color ACTIVE_COLOR = Color.red; static public Color INACTIVE_COLOR = Color.darkGray; protected String text; protected Polygon polygon; protected Rectangle rectangle; protected boolean isActive; protected static PolygonButton button; public PolygonButton(Polygon p, String text) { polygon = p; setText(text); setOpaque(false); addMouseListener(this); addMouseMotionListener(this); rectangle = new Rectangle(polygon.getBounds()); // Bug alert! rectangle.grow(1, 1); setBounds(rectangle); polygon.translate(-rectangle.x, -rectangle.y); } public void setText(String t) { text = t; } public String getText() { return text; } public void mouseMoved(MouseEvent e) { if (!rectangle.contains(e.getX(), e.getY()) || e.isConsumed()) { if (isActive) { isActive = false; repaint(); } return; // quickly return, if outside our rectangle } int x = e.getX() - rectangle.x; int y = e.getY() - rectangle.y; boolean active = polygon.contains(x, y); if (isActive != active) setState(active); if (active) e.consume(); } public void mouseDragged(MouseEvent e) { } protected void setState(boolean active) { isActive = active; repaint(); if (active) { if (button != null) button.setState(false); setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } else { button = null; setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } } public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseExited(MouseEvent e) { mouseMoved(e); } public void mouseEntered(MouseEvent e) { mouseMoved(e); } public void paint(Graphics g) { g.setColor(isActive ? ACTIVE_COLOR : INACTIVE_COLOR); g.drawPolygon(polygon); } public static void main(String[] argv) { JFrame f = new JFrame(); f.setSize(400, 300); Polygon p = new Polygon(); p.addPoint(10, 10); p.addPoint(100, 300); p.addPoint(300, 300); p.addPoint(10, 10); PolygonButton btn = new PolygonButton(p, "button"); f.getContentPane().add(btn); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; f.addWindowListener(wndCloser); f.setVisible(true); } }"The sole cause of man’s unhappiness is that he does not know how to stay quietly in his room." - Blaise Pascal
Similar Threads
-
Submit Button Help
By Jay-1.1 in forum New To JavaReplies: 2Last Post: 05-06-2008, 04:28 PM -
Dynamically create a button, but what happened?
By love2java in forum AWT / SwingReplies: 1Last Post: 02-17-2008, 12:01 AM -
Using SWT Button
By Java Tip in forum Java TipReplies: 0Last Post: 01-08-2008, 09:05 AM -
SWT push button
By Java Tip in forum Java TipReplies: 0Last Post: 12-31-2007, 01:21 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks