2011-08-28 81 views
2

我想更改我的JLabel的背景顏色。 setBackground()不起作用。它不會改變顏色。這裏是我的代碼:如何更改JLabel的顏色


import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Test1 implements AdjustmentListener { 

    static JScrollBar sbarR, sbarG, sbarB; 
    static JLabel lbl; 
    static JPanel panel2; 
    static int r, g, b; 
    static Test1 nb; 

    public static void main(String[] args) { 

     nb = new Test1(); 

     JFrame frame = new JFrame("Test"); 
     frame.setLayout(new GridLayout(1,2)); 
     frame.setBounds(100, 100, 200, 200); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel panel1 = new JPanel(); 
     panel1.setLayout(new GridLayout(1, 3)); 
     panel2 = new JPanel(); 

     lbl = new JLabel(); 
     lbl.setOpaque(true); 

     sbarR = new JScrollBar(Adjustable.VERTICAL, 0, 1, 0, 255); 
     sbarG = new JScrollBar(Adjustable.VERTICAL, 0, 1, 0, 255); 
     sbarB = new JScrollBar(Adjustable.VERTICAL, 0, 1, 0, 255); 

     sbarR.addAdjustmentListener(nb); 
     sbarG.addAdjustmentListener(nb); 
     sbarB.addAdjustmentListener(nb); 

     panel2.add(lbl);   
     frame.add(panel1); 
     frame.add(panel2); 

     panel1.add(sbarR); 
     panel1.add(sbarG); 
     panel1.add(sbarB); 

     frame.setVisible(true); 
    } 

    @Override 
    public void adjustmentValueChanged(AdjustmentEvent e) { 

     r = sbarR.getValue(); 
     g = sbarG.getValue(); 
     b = sbarB.getValue(); 

     lbl.setBackground(new Color(r, g ,b)); 
    } 
}

請任何人都可以幫助我。謝謝。

+0

「它不會工作」不是很精確。你究竟看到了什麼? –

+0

@Jon Skeet Sory。我編輯它。 –

回答

5

它不起作用,因爲你的標籤沒有任何文本,所以它的大小是[0,0],因此它根本不可見。用new JLabel("Hello world")構建它,它將按預期工作。

+0

以及我認爲標籤將設置爲整個面板。因爲我正在使用網格佈局。就像JButtons一樣。謝謝...! –

+1

您的整體'JFrame'和panel1正在使用'GridLayout',但您的panel2使用'FlowLayout'的'JPanel'默認值。嘗試添加'panel2.setLayout(new BorderLayout());'並用'panel2.add(lbl,BorderLayout.CENTER)'替換'panel2.add(lbl);'使lbl填充panel2的全部。 –

+0

謝謝........! –