Wie erstelle ich eine JButton-Erweiterung mit abgerundeten Ecken?
Dies ist eine Fortsetzung der Frage"Java gerundet Swing JButton". Ich habe nach einer Erweiterung von javax.swing.JButton gesucht, die das gesamte Laufzeitverhalten erbt und das Zeichnen der Ecken überschreibt.
Verwenden Sie den Code vonnoah.w aufsun forums Seite das ergebnis sieht so aus:
Alternativtext http://i40.tinypic.com/107qfkp.jpg
Ich möchte in der Lage sein, den gleichen Farbverlauf im Hintergrund zu haben, wenn ich mit der Maus über eine Änderung gehe usw. Weiß jemand, wie man das macht?
Code, der das Java Swing-Fenster aus dem Bild erstellt, ist:
<code>public class XrButton extends JButton implements MouseListener { private static final long serialVersionUID = 9032198251140247116L; String text; boolean mouseIn = false; public XrButton(String s) { super(s); text = s; setBorderPainted(false); addMouseListener(this); setContentAreaFilled(false); } @Override public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; if (getModel().isPressed()) { g.setColor(g.getColor()); g2.fillRect(3, 3, getWidth() - 6, getHeight() - 6); } super.paintComponent(g); if (mouseIn) g2.setColor(Color.red); else g2.setColor(new Color(128, 0, 128)); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setStroke(new BasicStroke(1.2f)); g2.draw(new RoundRectangle2D.Double(1, 1, (getWidth() - 3), (getHeight() - 3), 12, 8)); g2.setStroke(new BasicStroke(1.5f)); g2.drawLine(4, getHeight() - 3, getWidth() - 4, getHeight() - 3); g2.dispose(); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().setLayout(new FlowLayout()); XrButton xrButton = new XrButton("XrButton"); JButton jButton = new JButton("JButton"); frame.getContentPane().add(xrButton); frame.getContentPane().add(jButton); frame.setSize(150, 150); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { mouseIn = true; } public void mouseExited(MouseEvent e) { mouseIn = false; } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } </code>