java问题求助

我是初学者,想写个躲避球球的小游戏,顶上一个JPanel的JLabel用来显示玩家坚持不死的时间,但显示时间总是0.0,以下是部分代码,求助大侠classGFrameex... 我是初学者,想写个躲避球球的小游戏,顶上一个JPanel的JLabel用来显示玩家坚持不死的时间,但显示时间总是0.0,以下是部分代码,求助大侠
class GFrame extends JFrame implements ComponentListener,KeyListener,ActionListener
{
private Game game;
private JPanelbar jpanel;
private static Timer timer;
private int delay = 100;
private static double t = 0;
public GFrame()
{
super("躲避球");
this.setBounds(300,200,640,480);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);

jpanel = new JPanelbar();
this.getContentPane().add(jpanel,"North");

Thread thread = new Thread(jpanel);
thread.start();

game = new Game();
this.getContentPane().add(game,"Center");
this.addKeyListener(this);
this.setVisible(true);
timer = new Timer(delay,this);
timer.start();
}
private class JPanelbar extends JPanel implements Runnable,ActionListener
{
private JLabel label = new JLabel("坚持时间:");

public JPanelbar()
{
this.add(label);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==timer)
{
t+=0.1;
this.run();
}
}
public void run()
{
label.setText("坚持时间:"+t);
}
}
一二楼怎么答非所问啊
展开
 我来答
fqcjd80
2011-01-14 · TA获得超过477个赞
知道答主
回答量:389
采纳率:0%
帮助的人:320万
展开全部
public class Calcu extends JFrame implements ActionListener {
JTextField txtResult = new JTextField("0.");
JPanel jpCenter;
JPanel jpButtom;
JButton buttons[];
String[] strs = { "7", "8", "9", "+", "sqrt", "4", "5", "6", "-", "%", "1",
"2", "3", "*", "1/x", "0", "pow", ".", "/", "=" };
// 退格键
JButton btnBackspace = new JButton("BackSpace");
// 清除键
JButton btnClear = new JButton("Clear");
// 是否可以按键。默认可以,
// 若出现错误:例如:除数不能为零,则为false
boolean keyAvailable = true;
// 判断是否已经按过小数点,默认没有安国小数点
boolean alreadyHaveDot = false;
// 是否是计算结果(判断是否可以使用退格键)
// 默认不是计算结果
boolean isResult = false;
// 是否点击运算符进行计算结果
boolean isClickEqueal = false;
// 是否点击运算符之后,重新赋值
boolean isResetNowInput = false;
// 现在输入的数据
String nowInputNumber = "";
// 计算结果的数据
String resultNumber = "";
// 定义当前点击的运算符
String opt = "";

public Calcu() {
super("计算器");
// 1表示水平间距,3表示垂直间距
this.setLayout(new BorderLayout(1, 3));
// 设置文本框不可编辑
txtResult.setEditable(false);
// 设置文本框内容居右对齐
txtResult.setHorizontalAlignment(JTextField.RIGHT);
// 创建中央面板对象,设置为网格布局:4行5列
jpCenter = new JPanel(new GridLayout(4, 5, 2, 2));
// 实例化按钮数组
buttons = new JButton[strs.length];
for (int i = 0; i < strs.length; i++) {
// 创建每一个按钮对象
buttons[i] = new JButton(strs[i]);
// 给每一个按钮注册事件监听
buttons[i].addActionListener(this);
// 将每一个按钮添加到中央面板
jpCenter.add(buttons[i]);
}
// 给"Backspace"和"Clear"注册事件监听
btnBackspace.addActionListener(this);
btnClear.addActionListener(this);
// 创建中央面板对象,设置为网格布局:1行2列
jpButtom = new JPanel(new GridLayout(1, 2, 2, 2));// 水平间距,垂直间距
// 将"Backspace"和"Clear"添加到面板上
jpButtom.add(btnBackspace);
jpButtom.add(btnClear);
// 将文本框组件和中央面板添加到窗口上
this.add(txtResult, BorderLayout.NORTH);// 北侧
this.add(jpCenter, BorderLayout.CENTER);// 中间
this.add(jpButtom, BorderLayout.SOUTH);// 南侧
this.setSize(320, 250);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {
new Calcu();

}

public void actionPerformed(ActionEvent e) {
// 获取按钮表面的文字
String text = e.getActionCommand();
// (1)判断“Clear”键
if ("Clear".equalsIgnoreCase(text)) {
keyAvailable = true;// 默认可以按键
alreadyHaveDot = false;// 默认没有安国小数点
isResult = false;// 默认不是计算结果
txtResult.setText("0.");
// 默认点击运算符之后,不计算结果
isClickEqueal = false;
// 默认点击运算符之后,重新赋值
isResetNowInput = false;
nowInputNumber = "";// 现在输入数
resultNumber = "";// 计算结果
opt = "";// 当前运算符
return;
}
// 若出现错误:例如:除数不能为零
if (!keyAvailable) {
return;
}
// 已经按过小数点,再次按小数点被屏蔽
if (alreadyHaveDot && ".".equalsIgnoreCase(text)) {
return;
}
// (2)判断“BackSpace”键
if ("BackSpace".equalsIgnoreCase(text)) {
if (!isResult) {
// 不是计算结果,可以退格
String str = txtResult.getText();
if (str.length() == 2) {
// 最后两个字符
if (!"0".equals(str.substring(0, 1))) {
str = "0.";
}
} else {
// 整数
if ('.' == str.charAt(str.length() - 1)) {
str = str.substring(0, str.length() - 2) + ".";
} else {// 小数
str = str.substring(0, str.length() - 1);
}
}
txtResult.setText(str);
}
return;
}
// (3)判断0~9数字或小数点
if ((Character.isDigit(text.charAt(0)) && text.length() == 1)
|| ".".equalsIgnoreCase(text)) {
if (".".equalsIgnoreCase(text)) {// 小数点
if (isResetNowInput) {// 点击运算符之后重新赋值
nowInputNumber = "0";
txtResult.setText("0.");
isResetNowInput = false;
isResult = false;// 不是计算结果
}
alreadyHaveDot = true;
} else {// 0~9数字
String str = "";
if (isResetNowInput) {// 点击运算符之后,重新赋值
nowInputNumber = text;
str = nowInputNumber + ".";
isResetNowInput = false;
isResult = false;
} else {
if (!alreadyHaveDot) {// 没有小数点
nowInputNumber += text;
str = nowInputNumber + ".";
} else {
nowInputNumber = txtResult.getText() + text;
str = nowInputNumber;
}
}
// 给文本框赋值
txtResult.setText(str);
}
} else {// 功能区按钮
alreadyHaveDot = false;
// 点击运算符之后重新赋值
isResetNowInput = true;
// (4)判断“=”按钮
if ("=".equalsIgnoreCase(text)) {
if (!"".equalsIgnoreCase(opt)) {
isResult = true;// 是计算结果
isClickEqueal = false;// 是否点击运算符进行计算结果
calResult(opt);// 开始计算结果
}
} else {// 判断运算符
// (5)判断“sqrt”按钮
if ("sqrt".equalsIgnoreCase(text)) {
opt = "";// 清空当前的运算符
isResult = true;// 式计算结果
isClickEqueal = true;
// 获取文本框上的内容
String str = txtResult.getText();
double d = Double.parseDouble(str);
if (d < 0) {
keyAvailable = false;
txtResult.setText("小于零的数不能开平方根");
} else {
txtResult.setText(Double.toString(Math.sqrt(d)));
}

} else if ("1/x".equalsIgnoreCase(text)) {
// (6)判断“1/x”按钮
opt = "";// 清空当前的运算符
isResult = true;// 式计算结果
isClickEqueal = true;
// 获取文本框上的内容
String str = txtResult.getText();
double d = Double.parseDouble(str);
if (d == 0) {
keyAvailable = false;
txtResult.setText(" 除数不能是零");
} else {
txtResult.setText(Double.toString(1 / d));
}
} else {// (7)双目运算符
opt = text;// 设置当前运算符
if (isClickEqueal) {
// 点击运算符之后运算结果
isResult = true;// 是计算结果
calResult(opt);// 开始计算结果
} else {
// 点击运算符进行计算结果
resultNumber = txtResult.getText();
}

// 点击运算符计算结果
isClickEqueal = true;
}
}

}
}
/**
* 计算结果
*
* @param opt
* 运算符
*/
public void calResult(String opt) {
double d = 0, d1 = 0, d2 = 0;
try {
d1 = Double.parseDouble(resultNumber);
d2 = Double.parseDouble(nowInputNumber);
} catch (NumberFormatException e) {
keyAvailable = false;
txtResult.setText("操作有误!");
}
if ("+".equalsIgnoreCase(opt)) {
d = d1 + d2;
} else if ("-".equalsIgnoreCase(opt)) {
d = d1 - d2;
} else if ("*".equalsIgnoreCase(opt)) {
d = d1 * d2;
} else if ("/".equalsIgnoreCase(opt)) {
if (d2 == 0) {
keyAvailable = false;
txtResult.setText("除数不能为零!");
} else {
d = d1 / d2;
}
} else if ("%".equalsIgnoreCase(opt)) {
if (d2 == 0) {
keyAvailable = false;
txtResult.setText("取余时除数不能为零!");
} else {
d = d1 % d2;
}
} else if ("pow".equalsIgnoreCase(opt)) {
d = Math.pow(d1, d2);
}
if (keyAvailable) {// 没有错误就显示正确结果
txtResult.setText(Double.toString(d));
resultNumber = txtResult.getText();
}
}
}
恬然且谦虚的小才子Q
2011-01-15 · TA获得超过1361个赞
知道小有建树答主
回答量:933
采纳率:0%
帮助的人:403万
展开全部
哥们,没能完全满足你的要求,不是图形界面,我现在图形界面的异常处理不是太懂,只能这样给你做了,但你的要求完全实现,你可以再根据你的要求改成图形界面的

先定义一个类
import java.io.*;

public class Checkfile
{
public Checkfile()
{
}

public void compare() throws IOException
{
int i=0; //标记行数

BufferedReader stadin = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("请输入文件一的文件名");
String filename1 = stadin.readLine();

System.out.println("请输入文件二的文件名");
String filename2 = stadin.readLine();

BufferedReader fileIn1 = new BufferedReader(new FileReader(filename1));
String currentLine1 = fileIn1.readLine();

BufferedReader fileIn2 = new BufferedReader(new FileReader(filename2));
String currentLine2 = fileIn2.readLine();

while((currentLine1!=null)&&(currentLine2!=null))
{
i++;

if(currentLine1.equals(currentLine2))
{
currentLine1 = fileIn1.readLine();
currentLine2 = fileIn2.readLine();
}else{
System.out.println("文件一的第"+i+"行与文件二的第"+i+"行不相等");
System.out.println("文件一的第"+i+"行是"+currentLine1);
System.out.println("文件二的第"+i+"行是"+currentLine2);
System.out.println();
currentLine1 = fileIn1.readLine();
currentLine2 = fileIn2.readLine();
}
}
fileIn1.close();
fileIn2.close();
}

//文本字数统计
public void characterStatistics(String filename) throws IOException
{
int sum=0;

BufferedReader fileIn = new BufferedReader(new FileReader(filename));
String currentLine = fileIn.readLine();

while(currentLine!=null)
{
sum += currentLine.length();
currentLine = fileIn.readLine();
}
fileIn.close();
System.out.println("文件字数为"+sum);
}

//词语出现次数统计
public void wordStatistics(String filename) throws IOException
{
int num=0;

BufferedReader stadin = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("输入要统计的词语");
String word = stadin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader(filename));
String currentLine = fileIn.readLine();

while(currentLine!=null)
{
int n = currentLine.indexOf(word);
int m = currentLine.lastIndexOf(word);
if(n!=-1)
{
String[] s = currentLine.split(word);
num = s.length-1;
if(n==0)
{
num+=1;
}
if(m==(currentLine.length()-word.length()))
{
num+=1;
}
}
currentLine = fileIn.readLine();
}
fileIn.close();
System.out.println(word+"在文件中出现的次数是"+num);
}
}

测试类

import java.io.*;

public class CheckfileDemo
{
public static void main(String[] args) throws IOException
{
Checkfile n = new Checkfile();
n.compare();
//n.characterStatistics("nihao.txt");
//n.wordStatistics("nihao.txt");

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式