JAVA的一个题,由于本人没学JAVA,所以,请大侠帮个忙,高分!

时间:2022-09-21 19:06:58
一个上程序,非要用JAVA实现,而本人不是学的JAVA,所以,请哪位高手帮忙,搞定分全给!!

利用Java知识来解决日常生活中的问题。熟悉Java二维图形绘制方法和GregorianCalendar 类的使用。
屏幕上能够显示当前的时间、当日的日期和当日星期。并且当前的时间以表盘格式显示,表盘中的时针、分针和秒针能够随着时间的流逝而走动。要求:
(1) 表盘以图形的形式绘制
(2) 使用GregorianCalendar 类来显示当日的日期和当日星期
要求:
1- 写出编程思路
2- 对程序进行注释(程序编写用5号)

17 个解决方案

#1


看看

#2


命题作文啊!
支持下楼主 啊

#3


楼主头像很不错啊

给景甜顶一个

SWING包是画界面用的

很多画的方法

你自己看看吧

#4


挺标准的格式

#5


这个程序就是 java面向对象设计 多线程的例子吧

课程设计的时候,老师让写一个多线程例子,N多学生全用的这个
一个个全是表盘。。。。。。。。。。。

#6


这个程序就是 java面向对象设计 多线程的例子吧

课程设计的时候,老师让写一个多线程例子,N多学生全用的这个
一个个全是表盘。。。。。。。。。。。

#7


up

#8


不会。。 关注下

#9


顶下!

#10


不会 ,帮顶

#11


LZ的头像很好看。

#12


看看是不是你要的
我在csdn中拷贝的,谢谢原著的代码:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 时间类
 * @author xiaohei
 *
 */
public class Clock extends JFrame {
/**
 * 
 */
private static final long serialVersionUID = 1L;

public Clock() {
ClockPaint cp = new ClockPaint(20, 20, 70);

this.getContentPane().add(cp);
this.setSize(200, 200);
this.setResizable(false);
this.setLocation(260, 120);
this.setTitle("小时钟");
this.setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] s) {
new Clock();
}
}

class ClockPaint extends JPanel implements Runnable {
/**
 * 
 */
private static final long serialVersionUID = 1L;
int x, y, r;
int h, m, s;// 小时,分钟,秒
double rad = Math.PI / 180;

public ClockPaint(int x, int y, int r) {
this.x = x;
this.y = y;
this.r = r;
Calendar now = new GregorianCalendar();
s = now.get(Calendar.SECOND) * 6;// 获得秒转换成度数
m = now.get(Calendar.MINUTE) * 6;// 获得分钟
h = (now.get(Calendar.HOUR_OF_DAY) - 12) * 30
+ now.get(Calendar.MINUTE) / 12 * 6;// 获得小时

Thread t = new Thread(this);
t.start();
}

public void paint(Graphics g) {
// 清屏
super.paint(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, r * 3, r * 3);
// 画圆
g.setColor(Color.WHITE);
g.drawOval(x, y, r * 2, r * 2);
// 秒针
g.setColor(Color.RED);
int x1 = (int) ((r - 10) * Math.sin(rad * s));
int y1 = (int) ((r - 10) * Math.cos(rad * s));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
// 分针
g.setColor(Color.BLUE);
x1 = (int) ((r - r / 2.5) * Math.sin(rad * m));
y1 = (int) ((r - r / 2.5) * Math.cos(rad * m));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
// 时针
g.setColor(Color.CYAN);
x1 = (int) ((r - r / 1.5) * Math.sin(rad * h));
y1 = (int) ((r - r / 1.5) * Math.cos(rad * h));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
// 数字
g.setColor(Color.YELLOW);
int d = 29;
for (int i = 1; i <= 12; i++) {
x1 = (int) ((r - 10) * Math.sin(rad * d));
y1 = (int) ((r - 10) * Math.cos(rad * d));
g.drawString(i + "", x + r + x1 - 4, x + r - y1 + 5);
d += 30;
}
// 小点
d = 0;
for (int i = 0; i < 60; i++) {
x1 = (int) ((r - 2) * Math.sin(rad * d));
y1 = (int) ((r - 2) * Math.cos(rad * d));
g.drawString(".", x + r + x1 - 1, x + r - y1 + 1);
d += 6;
}
// 显示时间
Calendar now1 = new GregorianCalendar();
g.drawString(now1.get(Calendar.HOUR_OF_DAY) + ":"
+ now1.get(Calendar.MINUTE) + ":" + now1.get(Calendar.SECOND),
0, 10);

}

public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (Exception ex) {
}
s += 6;
if (s >= 360) {
s = 0;
m += 6;
if (m == 72 || m == 144 || m == 216 || m == 288) {
h += 6;
}
if (m >= 360) {
m = 0;
h += 6;
}
if (h >= 360) {
h = 0;
}
}
this.repaint();
}
}
}

#13


多线程

#14


走过路过一定要来顶过

#15


up

#16


这代码太酷了

#17


study

#1


看看

#2


命题作文啊!
支持下楼主 啊

#3


楼主头像很不错啊

给景甜顶一个

SWING包是画界面用的

很多画的方法

你自己看看吧

#4


挺标准的格式

#5


这个程序就是 java面向对象设计 多线程的例子吧

课程设计的时候,老师让写一个多线程例子,N多学生全用的这个
一个个全是表盘。。。。。。。。。。。

#6


这个程序就是 java面向对象设计 多线程的例子吧

课程设计的时候,老师让写一个多线程例子,N多学生全用的这个
一个个全是表盘。。。。。。。。。。。

#7


up

#8


不会。。 关注下

#9


顶下!

#10


不会 ,帮顶

#11


LZ的头像很好看。

#12


看看是不是你要的
我在csdn中拷贝的,谢谢原著的代码:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 时间类
 * @author xiaohei
 *
 */
public class Clock extends JFrame {
/**
 * 
 */
private static final long serialVersionUID = 1L;

public Clock() {
ClockPaint cp = new ClockPaint(20, 20, 70);

this.getContentPane().add(cp);
this.setSize(200, 200);
this.setResizable(false);
this.setLocation(260, 120);
this.setTitle("小时钟");
this.setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] s) {
new Clock();
}
}

class ClockPaint extends JPanel implements Runnable {
/**
 * 
 */
private static final long serialVersionUID = 1L;
int x, y, r;
int h, m, s;// 小时,分钟,秒
double rad = Math.PI / 180;

public ClockPaint(int x, int y, int r) {
this.x = x;
this.y = y;
this.r = r;
Calendar now = new GregorianCalendar();
s = now.get(Calendar.SECOND) * 6;// 获得秒转换成度数
m = now.get(Calendar.MINUTE) * 6;// 获得分钟
h = (now.get(Calendar.HOUR_OF_DAY) - 12) * 30
+ now.get(Calendar.MINUTE) / 12 * 6;// 获得小时

Thread t = new Thread(this);
t.start();
}

public void paint(Graphics g) {
// 清屏
super.paint(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, r * 3, r * 3);
// 画圆
g.setColor(Color.WHITE);
g.drawOval(x, y, r * 2, r * 2);
// 秒针
g.setColor(Color.RED);
int x1 = (int) ((r - 10) * Math.sin(rad * s));
int y1 = (int) ((r - 10) * Math.cos(rad * s));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
// 分针
g.setColor(Color.BLUE);
x1 = (int) ((r - r / 2.5) * Math.sin(rad * m));
y1 = (int) ((r - r / 2.5) * Math.cos(rad * m));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
// 时针
g.setColor(Color.CYAN);
x1 = (int) ((r - r / 1.5) * Math.sin(rad * h));
y1 = (int) ((r - r / 1.5) * Math.cos(rad * h));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
// 数字
g.setColor(Color.YELLOW);
int d = 29;
for (int i = 1; i <= 12; i++) {
x1 = (int) ((r - 10) * Math.sin(rad * d));
y1 = (int) ((r - 10) * Math.cos(rad * d));
g.drawString(i + "", x + r + x1 - 4, x + r - y1 + 5);
d += 30;
}
// 小点
d = 0;
for (int i = 0; i < 60; i++) {
x1 = (int) ((r - 2) * Math.sin(rad * d));
y1 = (int) ((r - 2) * Math.cos(rad * d));
g.drawString(".", x + r + x1 - 1, x + r - y1 + 1);
d += 6;
}
// 显示时间
Calendar now1 = new GregorianCalendar();
g.drawString(now1.get(Calendar.HOUR_OF_DAY) + ":"
+ now1.get(Calendar.MINUTE) + ":" + now1.get(Calendar.SECOND),
0, 10);

}

public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (Exception ex) {
}
s += 6;
if (s >= 360) {
s = 0;
m += 6;
if (m == 72 || m == 144 || m == 216 || m == 288) {
h += 6;
}
if (m >= 360) {
m = 0;
h += 6;
}
if (h >= 360) {
h = 0;
}
}
this.repaint();
}
}
}

#13


多线程

#14


走过路过一定要来顶过

#15


up

#16


这代码太酷了

#17


study