Bạn nên tạo thành phần của riêng mình cho việc này.
Override các paintComponent phương pháp trên một JPanel, và bên trong phương pháp bốc thăm paintComponent (ví dụ điền vào) một rectangle2D tròn trong màu xám màu:.
RoundRectangle2D roundedRectangle = new RoundRectangle2D.Float(x, y, w, h, 10, 10);
g.fill(roundedRectangle);
(Hai giá trị cuối cùng xác định độ cong Chơi xung quanh cho đến khi bạn có được những gì bạn muốn)
Bây giờ di chuyển x, y và giảm rộng và chiều cao để khi bạn vẽ ne hình chữ nhật xt, nó nằm bên trong hình chữ nhật màu xám. Đặt màu đồ họa thành màu xanh lam, sau đó thực hiện như sau:
RoundRectangle2D roundedRectangle2 = new RoundRectangle2D.Float(x + 5, y + 5, w - 10, h - 10, 10, 10);
g.fill(roundedRectangle2);
Bạn cũng sẽ cần phải thêm văn bản. Thêm văn bản yêu cầu vị trí x và y. Vị trí x và y chính xác có thể phức tạp để tính toán, vì vậy bạn có thể cần phải sử dụng FontMetrics để nhận thêm một số thông tin về hình dạng hình chữ nhật của chuỗi. Fontmetrics có các phương thức như stringWidth() và getHeight() sẽ giúp bạn xác định x và y của bạn là gì.
g.drawString("Click Me", x, y);
Cuối cùng, bạn cần có người nghe chuyển động trên bảng điều khiển. Trình nghe cần tìm khi con trỏ qua nút và sau đó vẽ lại thành phần.
Hình chữ nhật của bạn có thể được đúc thành đối tượng shape và có thể tính toán xem liệu chuột có trong hình dạng hay không. Ví dụ:
shape.contains(x,y)
Nếu nó chứa, thay đổi màu sắc, sau đó gọi repaint() hoặc updateUI() trên bảng điều khiển.
Lưu ý: đối tượng màu màu phải được giữ như một trường cấp lớp trong lớp để có thể thay đổi thông qua di chuột qua.
Hy vọng điều này sẽ hữu ích!
http://java-swing-tips.blogspot.com/2008/11/rounded-corner-jbutton.html –
'Đầu tiên, tôi Web Developer' - với nghiên cứu nghèo trước đây, không có ý tưởng whos upvoted câu hỏi này, không có yêu cầu bất kỳ đồ họa, chỉ biên giới và ghi đè các sự kiện từ ButtonModel – mKorbel
Những gì ... những người upvoted này? : D Bạn có chắc chắn có [không có gì ở đây cho bạn ??] (http://stackoverflow.com/search?q=round+jbutton) Hãy nhớ rằng StackOverflow không phải là một nơi để hoàn thành công việc của bạn cho bạn. Vui lòng cung cấp một phác thảo về những gì bạn đã thử cho đến nay và nơi bạn đang mắc kẹt. Ngoài ra, hãy cố gắng cung cấp lý do tại sao bạn muốn mở rộng JButton và không được thúc đẩy, mọi thứ không được thực hiện vội vàng tại đây – avalancha