クラスの複数のインスタンスをjavaのJFrameに追加しようとしていますが、2つの異なるインスタンスをJFrameに追加しようとすると、最近追加されたインスタンスのみが表示されます。複数のクラスインスタンスをjframeに追加
私はここに示すの答えを見てきました: How to add multiple components to a JFrame?、ここで:Adding multiple classes to a Jframe
私のコードはhttps://www.youtube.com/watch?v=I3usNR8JrEE&index=51&list=PL53A7C2BE1F8D780C 後にモデル化されており、私は、EclipseのJava酸素放出4.7.1a を使用していますが、何も私のために働いていません。ここに私の主な機能です:
package BlockPack;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Block extends JPanel implements ActionListener {
@Override public Dimension getPreferredSize() {
return new Dimension(900, 900);
}
Timer tm = new Timer(50, this);
int blockWidth, blockHeight;
int x, y, velX = 2, velY = 0, gravity = 0;
String thisName;
boolean collidingGround = false;
public Block(String _name, int _x, int _y, int _width, int _height) {
thisName = _name;
x = _x;
y = _y;
blockWidth = _width;
blockHeight = _height;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(x, y, blockWidth, blockHeight);
tm.start();
}
public void actionPerformed(ActionEvent e) {
performMovement();
repaint();
}
private void performMovement() {
y += 1;
}
public static void main(String[] args) {
Block b = new Block("block1", 10, 30, 50, 50);
Block bb = new Block("block2", 30, 60, 10, 60);
JFrame jf = new JFrame();
jf.setLayout(new FlowLayout());
jf.setTitle("Ball");
jf.setSize(600, 400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = jf.getContentPane();
c.add(new Block("block1", 10, 30, 50, 50));
c.add(new Block("block2", 30, 60, 10, 60));
jf.setVisible(true);
}
}
を参照してください。https://stackoverflow.com/questions/10086936/java-adding-components-to-jframe – IEE1394
問題を再現する完全な最小例を投稿してください。ここではうまく動作しますが、ブロックを追加した後にフレームを表示させる必要がありますが、スイングのスレッドルールを尊重してください。ここに私の完全な最小限の例があります:https://gist.github.com/jnizet/3910ae413d22ca7f153d9fdc41e22086 –
@ IEE1394推奨していただきありがとうございますが、以前と同じ結果が得られました。追加された最後のものだけが表示されます – Ninjakid14