读书人

用什么办法可以化除“游戏结束”这几个

发布时间: 2013-03-28 10:20:24 作者: rapoo

用什么办法可以消除“游戏结束”这几个字被覆盖的
用什么办法可以化除“游戏结束”这几个字被覆盖的用什么办法可以消除“游戏结束”这几个字被覆盖的
[解决办法]
try it

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

public class DelayedPaint {

private CenterPanel center;
private JFrame frame;
private JPanel panel;

public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
new DelayedPaint().createAndShowGUI();
}
});
}

void createAndShowGUI() {
frame = new JFrame("Delayed Paint");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(400, 400);
panel = new JPanel(new BorderLayout());
frame.setContentPane(panel);
NorthPanel north = new NorthPanel();
panel.add(north, BorderLayout.NORTH);
center = new CenterPanel();
panel.add(center, BorderLayout.CENTER);
frame.setVisible(true);
north.startTimer();
}

class NorthPanel extends JPanel {

private JLabel lb;

public NorthPanel() {
lb = new JLabel("Good morning");
add(lb);
}

public void startTimer() {
ActionListener taskPerformer = new ActionListener() {

@Override
public void actionPerformed(ActionEvent evt) {
setLayout(new FlowLayout(FlowLayout.LEFT));
lb.setText("Left");
// timer.stop(); // Not needed if setRepeats(false).


center.startTimer();
}
};
javax.swing.Timer timer = new javax.swing.Timer(2000, taskPerformer);
timer.setRepeats(false);
timer.start();
}
}

class CenterPanel extends JPanel {

private int icnt;
private Font boldFont = new Font("Dialog", Font.BOLD, 15);
private Properties centerProps;
private javax.swing.Timer timer;

public CenterPanel() {
centerProps = new Properties();
centerProps.setProperty("circle", "false");
centerProps.setProperty("lastString", "0");
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
if (Boolean.valueOf(centerProps.getProperty("circle"))) {
Dimension dim = frame.getSize();
g2.draw(new Arc2D.Double(50, 25, dim.height - 100, dim.width - 100, 0, 360, Arc2D.OPEN));
}
int j = Integer.parseInt(centerProps.getProperty("lastString"));
if (j > 0) {
g2.setFont(boldFont);
for (int i = 1; i <= j; i++) {
g2.drawString("" + (char) (i + 48), i * 10, 50);
}
}
}

public void startTimer() {
ActionListener taskPerformer = new ActionListener() {



@Override
public void actionPerformed(ActionEvent evt) {
repaint(); // in paintComponent(...) icnt is already icnt+1.
icnt++;
if (icnt == 1) {
centerProps.setProperty("circle", "true");
timer.setDelay(500);
} else if (icnt <= 10) {
centerProps.setProperty("lastString", String.valueOf(icnt - 1));
if (icnt == 10) {
timer.stop();
}
}
}
};
timer = new javax.swing.Timer(2000, taskPerformer);
timer.start();
}
}
}

读书人网 >J2SE开发

热点推荐