2011-12-28 17 views
0

JButtonsとJPanelsに関する他の質問があるため、これは重複しているとは思われません。アプレットの背景でsetBackgroundが機能しない

1が引き受けるようにJavaで次のように動作していない理由を私は思っていた:

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

public class Example extends JApplet 
{ 
    public void paint(Graphics page) 
    { 
     setBackground (Color.cyan); 
    } 
} 

私はアプレットを実行すると、基本的背景にかかわらず色の、変更されません。私は同じ効果を得るための他の選択肢があることを認識していますが、教科書の例を使用していて、なぜそれが自分のマシンで動作しないのかを知りたいと思います。

答えて

3

が、私は教科書

からの例を使用していますが、テキストブックを取り除きます。 JAppletのpaint()メソッドをオーバーライドしてはいけません(これは古いAWTテクニックであり、Swingでは使用されません)。

Swingのアプレットは、Swingのアプリケーションとまったく同じです。アプレットのコンテンツペインにコンポーネントを追加します。カスタムペイントは、JPanel(またはJComponent)のpaintComponent()メソッドをオーバーライドしてから行う必要がある場合は、パネルをコンテンツペインに追加します。

アプレットの背景を変更する場合は、コンテンツペインの背景(またはコンテンツペインの中央に追加するパネルの背景)を変更します。何かのように:

getContentPane().setBackground(Color.CYAN); 

このコードはinit()メソッドで実行されます。

Swing tutorialから始めます。 How to Make Appletsのセクションと「カスタムペインティングを実行する」セクションがあります。

+0

ペイントメソッドをオーバーライドすることは、以前のawtテクニックだと言いますが、これはJ2SE 5.0と一貫性がありますか?これは、実際に塗料のメソッドをオーバーライドする唯一の例であるためです。他の例は正しい方法で行われているように見えますが、減価償却された技術がどこにあるのか分かりません。 – user1086516

+2

これはJavaのバージョンとは関係ありません。 AWTとSwingの違いと関係があります。 – camickr

関連する問題