Javaの、タイムラインについて
ゲームの始まりとともに、カウントが始まり、10秒後に停止、ゲームオーバー画面を、出すことができません。
package luna.sexydesign;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Subthread extends Thread {
private MyPanel2 p2;
public Subthread(MyPanel2 p2) {
this.p2 = p2;
}
@Override
public void run() {// TODO Auto-generated constructor stub
try {
sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// SwingUtilities.invokeLater(() ->
p2.setPanel3();
}
}
public class ScreenToucher extends JFrame {
int i = 0;
static int width = 500;
static int height = 500;
private MyPanel1 p1;
public static void main(String args[]) {
ScreenToucher frame = new ScreenToucher("Screen Toucher");
frame.setVisible(true);
}
ScreenToucher(String title) {
setTitle(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, width, height);
p1 = new MyPanel1();
MyPanel2 p2 = new MyPanel2(this);
Subthread thread = new Subthread(p2);
thread.start();
add(p1, BorderLayout.NORTH);
add(p2, BorderLayout.CENTER);
}
public void setCount(int count) {
p1.setCount(count);
}
}
class MyPanel1 extends JPanel {
int i;
private JLabel jl1;
MyPanel1() {
JPanel jp1 = new JPanel();
jl1 = new JLabel();
jp1.setBackground(Color.green);
Integer j = new Integer(i);
String text = j.toString();
jl1.setText(text);
jp1.add(jl1);
add(jp1);
}
public void setCount(int count) {
jl1.setText(Integer.toString(count));
}
}
class MyPanel2 extends JPanel {
static int width = 500;
static int height = 500;
static int i = 0;
static int r = 60;
static int x;
static int y;
final static Color bc = Color.black;
final static Color dc = Color.green;
private ScreenToucher owner;
public MyPanel2(ScreenToucher owner) {
setBackground(Color.black);
this.owner = owner;
MouseListener();
repaint();
}
void MouseListener() {
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
double mouseX = e.getX();
double mouseY = e.getY();
if (mouseX > x && mouseX < x + 2 * r) {
if (mouseY > y && mouseY < y + 2 * r) {
repaint();
owner.setCount(Count());
}
}
}
});
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
x = (int) (Math.random() * width);
y = (int) (Math.random() * height) + 30;
if ((x < width - 2 * r) && (y < height - 2 * r)) {
g.setColor(dc);
g.fillOval(x, y, r, r);
} else {
repaint();
}
}
int Count() {
i += 100;
return i;
}
public void setPanel3(){
MyPanel3 p3 = new MyPanel3();
add(p3);
}
}
class MyPanel3 extends JPanel {
public MyPanel3() {
setBackground(new Color(0,0,0,100));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.white);
g.drawString("GAME OVER", 100, 200);
}
}