2010-11-13 39 views
11

Dưới đây là mã tạo 9 nút trong biểu mẫu gridlayout trên một pannel3 cụ thể. Những gì tôi muốn là làm cho nền của mỗi nút màu đen với văn bản màu xám trên nó. Có ai giúp được không?Cách đặt màu nền của một nút trong GUI Java?

for(int i=1;i<=9;i++) 
{ 
    p3.add(new JButton(""+i)); 
} 
+5

Thành thực mà nói, con người, sử dụng một IDE. Tự động hoàn thành là một trong những cách tốt nhất để tìm hiểu thư viện ngôn ngữ và tên phương pháp thường khá tự giải thích. –

+0

@DenisTulskiy tại sao nhận xét của bạn cần thiết? – Ungeheuer

+0

@JohnnyCoder, tôi đoán tôi đã thất vọng và đó là cách tôi nói rtfm. Tôi vẫn tin rằng đó là một lời khuyên tốt, mặc dù :) –

Trả lời

16

Kiểm tra tài liệu JButton. Đặc biệt chú ý đến các phương pháp setBackgroundsetForeground được thừa kế từ JComponent.

Cái gì như:

for(int i=1;i<=9;i++) 
{ 
    JButton btn = new JButton(String.valueOf(i)); 
    btn.setBackground(Color.BLACK); 
    btn.setForeground(Color.GRAY); 
    p3.add(btn); 
} 
+8

Điều này không hoạt động với Java 8 trên Mac. Màu nền là màu phía sau nút. Nút này sau đó được vẽ trên nền đen và nút có màu xám với văn bản màu xám. (bạn không thể đọc được văn bản). Trong thực tế, nó tồi tệ hơn ... nền đen không được vẽ chút nào trừ khi 'setOpaque (true)' được gọi đầu tiên. – Jason

3
for(int i=1;i<=9;i++) { 
    p3.add(new JButton(""+i) {{ 
     // initialize the JButton directly 
     setBackground(Color.BLACK); 
     setForeground(Color.GRAY); 
    }}); 
} 
1

Sử dụng phương pháp setBackground để thiết lập nền và setForeground để thay đổi màu sắc của văn bản. Tuy nhiên, lưu ý rằng việc đặt văn bản màu xám trên nền đen có thể làm cho văn bản của bạn trở nên khó đọc.

2

Bạn có thể hoặc không phải sử dụng phương pháp setOpaque để đảm bảo rằng màu sắc hiển thị bằng cách chuyển giá trị đúng cho phương thức.

0

Dường như phương thức setBackground() không hoạt động tốt trên một số nền tảng (tôi đang sử dụng Windows 7). Tôi đã tìm thấy this answer đến this question hữu ích. Tuy nhiên, tôi đã không hoàn toàn sử dụng nó để giải quyết vấn đề của tôi. Thay vào đó, tôi quyết định sẽ dễ dàng hơn và gần như là thẩm mỹ để tô màu một bảng điều khiển bên cạnh nút.

11

đơn giản:

btn.setBackground(Color.red);

Để sử dụng các giá trị RGB:

btn[i].setBackground(Color.RGBtoHSB(int, int, int, float[]));

+1

Tôi thích sử dụng btn.setBackground (Màu mới (int, int, int)); cho giá trị RGB –

1

Thay đổi sở hữu nền có thể không đủ như các thành phần sẽ không giống như một nút nữa. Bạn có thể cần phải tái thực hiện các phương pháp sơn như trong here để có được một kết quả tốt hơn:

enter image description here

Các vấn đề liên quan