import java.awt.Polygon;
import java.awt.Shape;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
class TriangleButton extends JButton {
private Shape triangle = createTriangle();
@Override
public void paintBorder( Graphics g ) {
((Graphics2D)g).draw(triangle);
}
@Override
public void paintComponent( Graphics g ) {
((Graphics2D)g).fill(triangle);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200,100);
}
@Override
public boolean contains(int x, int y) {
return triangle.contains(x, y);
}
private Shape createTriangle() {
Polygon p = new Polygon();
p.addPoint( 0 , 100 );
p.addPoint( 100 , 0 );
p.addPoint( 200 ,100 );
return p;
}
}
/**
*
* @author umum
*/
public class datar extends javax.swing.JFrame {
public static void main( String [] args ) {
JFrame frame = new JFrame();
final JButton b = new TriangleButton();
b.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Click!");
}
});
frame.add( new JPanel(){{add(b);}} );
frame.setVisible(true);
}
/** Creates new form datar */
public datar() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(0, 255, 204));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
// Variables declaration - do not modify
// End of variables declaration
}
ini hasil screen shot dari codingan di atas ......
Tidak ada komentar:
Posting Komentar