2011-08-05 59 views
1

我需要一些幫助來定製JButton。JButton定製問題

我使用下列擴展的方法來做到這一點...我需要backgound顏色添加到該按鈕,也是我需要把兩個不同的文本在兩個位置的按鈕(左上&中心)

我的代碼無法支持這兩種情況(顏色和文本位置)。要麼我能夠找到文本或者我能夠獲得BG顏色。 在當前的代碼我得到BG顏色,但文本沒有出現

protected void paintComponent(Graphics g) { 
     g.setColor(color); 
     g.fillRect(0, 0, getSize().width, getSize().height); 
     super.paintComponent(g); 
     setPreferredSize(new Dimension(47, 33)); 

     if (isHeader) { 
      g.setFont(new Font("Arial", Font.PLAIN, 11)); 
      g.drawChars(date.toCharArray(), 0, date.length(), 13, 20); 
      //setBackground(color); 

     } else { 
      g.setFont(new Font("Arial", Font.PLAIN, 9)); 
      g.drawChars(date.toCharArray(), 0, date.length(), 3, 11); 

      g.setFont(new Font("Arial", Font.PLAIN, 11)); 
      g.drawChars(hours.toCharArray(), 0, hours.length(), 18, 20); 

     } 
     super.paintComponent(g); 
     setContentAreaFilled(false); 
     g.finalize(); 
    } 
+2

Crosspost http://forums.oracle.com/forums/thread.jspa?threadID=2263469&tstart=0 – StanislavL

回答

1

在它看起來像你繪製文本乍一看,但你拉它在相同的顏色作爲背景,所以你將無法看到它。黑色背景上的黑色文字只是黑色。

您需要不同的文字和背景顏色。就像是;

protected void paintComponent(Graphics g) { 
    g.setColor(backgroundColor); 
    g.fillRect(0, 0, getSize().width, getSize().height); 
    super.paintComponent(g); 
    setPreferredSize(new Dimension(47, 33)); 

    g.setColor(textColor); //set the text color before drawing the text 
    if (isHeader) { 
     g.setFont(new Font("Arial", Font.PLAIN, 11)); 
     g.drawChars(date.toCharArray(), 0, date.length(), 13, 20); 
    } else { 
     g.setFont(new Font("Arial", Font.PLAIN, 9)); 
     g.drawChars(date.toCharArray(), 0, date.length(), 3, 11); 

     g.setFont(new Font("Arial", Font.PLAIN, 11)); 
     g.drawChars(hours.toCharArray(), 0, hours.length(), 18, 20); 
    } 
    super.paintComponent(g); 
    setContentAreaFilled(false); 
    g.finalize(); 
} 

這些似乎是你的代碼中的其他一些惡作劇。你爲什麼不使用setBackground(),你爲什麼要撥打super.paintComponent()兩次?

編輯:另外,你爲什麼要在繪圖方法中設置組件的大小?這似乎是錯誤的。爲什麼你在Graphics對象上調用finalize()

+3

他在forums.oracle.com上的帖子中被告知相同 – StanislavL

+0

HI Qwerky非常感謝..我得到了這個問題和它的工作現在對我來說很好。我正在第一次使用Swing ......一直是J2EE的傢伙......所以請原諒我的有趣錯誤:)嗨StanislavL ......感謝你以及幫助我​​:) – Gaurav

+1

-1再次重複完全不潔的代碼:永遠不會(如在_really_永遠不會,甚至當地獄凍結時)改變paintXX中的組件狀態。 – kleopatra