次のコードを使用して、Javaアプレットにラベルを追加しました。私は(mylabelという)を追加呼び出すとJlabelをJavaアプレットに追加
ImageIcon icon = new ImageIcon(s);
JLabel myLabel = new JLabel(icon);
add(myLabel);
、画面がクリアされ、私は前に描かれているすべてのものがなくなっている:これらの行は、塗料(グラフィックスグラム)メソッド内にあります。 なぜですか?
次のコードを使用して、Javaアプレットにラベルを追加しました。私は(mylabelという)を追加呼び出すとJlabelをJavaアプレットに追加
ImageIcon icon = new ImageIcon(s);
JLabel myLabel = new JLabel(icon);
add(myLabel);
、画面がクリアされ、私は前に描かれているすべてのものがなくなっている:これらの行は、塗料(グラフィックスグラム)メソッド内にあります。 なぜですか?
これらの線は、塗料(グラフィックG)メソッド内にある:あなたがpaint()メソッド内のGUIにコンポーネントを追加することはありません
。
また、カスタムペインティングが必要な場合は、paint()ではなくpaintComponent()をオーバーライドする必要があります。
Swing tutorialを読むことをお勧めします。カスタムの実行のお手伝いをすることができます
絵画ラベル
Using Layout Managers
にもセクトンがあります。私は何を自由にデザインするのかはわかりませんが、あなたがそれを使用すべきかどうかは疑問です。
ただ追加して@camickrと言っています。
paint
メソッドではコンポーネントを絶対に追加しないでください。コンポーネントがペイントされるたびに、次のコードは、
ImageIcon icon = new ImageIcon(s);
JLabel myLabel = new JLabel(icon);
add(myLabel);
あなたは新しいJLabelのにコンポーネントがペイントされるたびに追加されているとして、あなたはいくつかの点でメモリ不足になり、100%確信している。この方法で
を実行します。親コンポーネントが作成されたら、ラベルを追加する必要があります。 アプリケーションでアニメーションを作成する場合は、paintComponent
メソッドからアクセスできる
List
の中にこれらのイメージをロードして配置することをお勧めします。
List<JLabel> images = new ArrayList<JLabel>();
// populate images when the application needs them...
// ...
@Override
public void paintComponent(Graphics g){
// get the image your want to draw
JLabel imageToDraw = images.get(imageIndex);
}
使用されるレイアウトは何ですか? – Kowser
レイアウトはフリーですデザイン – user1077980
別の種類のレイアウトを使用する必要がありますか? – user1077980