2016-08-09 13 views
1

私は学習目的で既存のゲームを複製しようとしています。以下のコードは、ラベルと画像で塗りつぶされた四角形のJFrameを作成しますが、 "Start"ラベル自体は複製されているようです。私はJavaにいくつかの経験がありますが、私はまだ学生です。スイング経験はほとんどありません。私が描いた正方形がラベルを隠すので、私はパネルの代わりにフレームにラベルを追加しました。ありがとう:DJLabel自体が複製されます

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

public class Test{ 
    public static void main(String[] args){ 

     JFrame frame = new JFrame("Miau"); 
     MyPanel panel = new MyPanel(); 
     frame.setVisible(true); 
     frame.setSize(600,600); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(panel); 
     frame.setVisible(true); 
     JLabel labelstart = new JLabel("Start"); 
     frame.add(labelstart); 
     labelstart.setLocation(100, 100); 
     labelstart.setSize(30,14); 
    } 
} 

class MyPanel extends JPanel { 
    public void paint(Graphics g) { 
    g.setColor(Color.black); 
    //g.fillRect(10,10,570,100); 
    int posx = 10; 
    int posy = 120; 
    g.drawRect(10,10,570,100); 
    g.drawRect(posx,posy,570,430); 
    int size = 5; 
    int width = 570/size; 
    int height = 430/size; 

    for(int m=0;m<size;m++){ 
     for(int n=0;n<size;n++){ 
      g.drawRect(posx,posy,width,height); 
      posx += width; 
     } 
     posx = 10; 
     posy += height; 

    } 

    } 
} 
+2

'paint'ではなく' paintComponent'をオーバーライドします。 [this](http://stackoverflow.com/questions/9389187/difference-between-paint-paintcomponent-and-paintcomponents-in-swing)と[this](https://docs.oracle.com/javase/)を参照してください。 tutorial/uiswing/painting /) – copeg

+2

オーバーライド内でスーパーペイントメソッドを呼び出します。 –

+1

また、GUIを計画する際にレイアウトマネージャを無視しないでください。 JFrameはデフォルトでBorderLayoutを使用しています(実際にはcontentPaneが使用します)。 –

答えて

0

私の問題の有効な解決策が見つかりました。私はlabel.setBounds(positionx,positiony,boundx,boundy)を使用しました。私は、爽やかなJPanelを使ったシンプルなゲームを作ろうとしています。

+0

Java GUIは、異なるロケールの異なるPLAFを使用して、異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 –

関連する問題