关于java JFrame 以及多线程
来源:百度知道 编辑:UC知道 时间:2024/06/06 14:39:53
我已经写的代码:
import java.awt.*;
import java.awt.event.*;
public class Caidan {
public static void main(String[] args) {
new CaiWindow();
}
}
class CaiCanvas extends Canvas {
Color c;
CaiCanvas(Color c) {
this.c = c;
}
public void paint(Graphics g) {
g.setColor(c);
int p, q;
p = (int) (Math.random() * 460);
q = (int) (Math.random() * 400);
g.fillRect(p, q, 30, 30);
}
}
class CaiWindow extends Frame implements Runnable, ActionListener {
Panel a, b;
Button btn;
Thread thread;
CaiWindow() {
thread = new Thread(this);
a = new Panel();
b = new Panel();
btn = new Button("click");
btn.addActionListener(this);
a.add(btn);
add(a, Bord
思路:用一个list来保存各个方块的位置。每次添加一个方块的时候,在一个单独的线程里等待3秒钟,然后把该方块从list里删除,在等待开始的时候和结束的时候重绘面板。
//ColorSquare.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ColorSquare {
public static void main(String[] args) {
new MyFrame();
}
}
class MyFrame extends JFrame {
private JButton btn;
private SquarePanel panel;
MyFrame() {
setSize(500,500);
btn = new JButton("click");
add(btn, BorderLayout.NORTH);
panel = new SquarePanel();
add(panel, Borde