2011-08-05 7 views
1

私はJButtonのカスタマイズに助けが必要です。JButtonカスタマイズの問題

私がそうするように次の拡張メソッドを使用しています...私はボタンにbackgound色を追加する必要があり、また、私はボタン(左上&センター)で2箇所で二つの異なるテキストを配置する必要が

私のコードは両方のシナリオ(色とテキストの位置)をサポートすることができません。私はテキストを配置することができますか、または私は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

クロスポストhttp://forums.oracle.com/forums/thread.jspa?threadID=2263469&tstart=0 – StanislavL

答えて

1

を表示されないでBGの色が、テキストを取得しています現在のコードで 、あなたはそれを見ることができなくなります。黒い背景の黒い文字は黒です。

テキストと背景に異なる色が必要です。何かのようなもの;

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()を2回呼び出すのはなぜですか?

編集:また、なぜコンポーネントのサイズをペイント方法で設定していますか?それは間違っているようだ。そしてGraphicsオブジェクトでfinalize()に電話する理由は何ですか?

+3

フォーラムのポストで同じことを話されました。oracle.com – StanislavL

+0

HI Qwerkyありがとうございました。問題とそのうまくいったことが今私のためにある。私は初めてSwingに取り組んでいます... J2EEの人になっています...私の面白い間違いを許してください:) StanislavLこんにちは...あなたも助けてくれてありがとうございました:) ... – Gaurav

+1

-1まったく不潔なコードを繰り返します。決して決して(決して、決して地獄が凍っていなくても)paintXXのコンポーネント状態を変更します。 – kleopatra

関連する問題