私は学習目的で既存のゲームを複製しようとしています。以下のコードは、ラベルと画像で塗りつぶされた四角形の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;
}
}
}
'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
オーバーライド内でスーパーペイントメソッドを呼び出します。 –
また、GUIを計画する際にレイアウトマネージャを無視しないでください。 JFrameはデフォルトでBorderLayoutを使用しています(実際にはcontentPaneが使用します)。 –