我现在正在制作时钟,目前我的秒针,分针和时针都使用Line
带有(x0, y0)
开始坐标和(x1, y1)
结束坐标的对象以图形方式绘制。
现在让我感到困惑的是如何使秒针每经过一秒就“滴答”。也就是说,如何更新(x1, y1)
坐标(由于开始坐标始终位于时钟的中心,因此我们不需要更新坐标),以使其顺时针移动6度?这使我感到困惑,因为单位圆的方向(以及弧度的方向)是逆时针方向。
这个例子]非常好用…
public class TestClock {
public static void main(String[] args) {
new TestClock();
}
public TestClock() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new ClockPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
protected class ClockPane extends JPanel {
public ClockPane() {
Timer timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
});
timer.setRepeats(true);
timer.setCoalesce(false);
timer.start();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
protected Point getPointTo(float angle) {
int x = Math.round(getWidth() / 2);
int y = Math.round(getHeight() / 2);
double rads = Math.toRadians(angle);
// This is an arbitrary amount, you will need to correct for this
// I'm working of a width of 200 pixels, so that makes the radius
// 100...
int radius = 100;
// Calculate the outter point of the line
int xPosy = Math.round((float) (x + Math.cos(rads) * radius));
int yPosy = Math.round((float) (y - Math.sin(rads) * radius));
return new Point(xPosy, yPosy);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setColor(Color.RED);
Calendar cal = Calendar.getInstance();
int seconds = cal.get(Calendar.SECOND);
float angle = -(360f * (seconds / 60f));
angle += 90; // Correct for 0 being out to the right instead of up
Point p = getPointTo(angle);
int x = getWidth() / 2;
int y = getHeight() / 2;
g2d.drawLine(x, y, p.x, p.y);
FontMetrics fm = g2d.getFontMetrics();
String text = Integer.toString(seconds);
g2d.drawString(text, getWidth() - fm.stringWidth(text), getHeight() - fm.getHeight() + fm.getAscent());
g2d.dispose();
}
}
}
问题内容: 我发现了这种奇怪: 输出: 这是如何运作的? 问题答案: 该数字适合64位,其二进制表示为: 程序从右到左为每个5位组解码一个字符 对于5位,可以表示2 = 32个字符。英文字母包含26个字母,因此除字母外还留出32-26 = 6个符号的空间。通过这种编码方案,您可以拥有全部26个(一种情况)的英文字母和6个符号(其中是空格)。 算法说明 该从组到组中的for循环跳跃,则5位组被分离安
我从堆栈溢出的404 Not Found错误页面复制了下面的代码。 上面的代码编译精细,在控制台上打印404。我以为语句print(202*2);负责打印404,但我不对,因为更改此语句中的数字也打印404。 有人能帮我理解这个代码以及它是如何打印404的吗? 我发布编译输出供您参考,因为有评论说此代码无法编译。包含上述代码的文件是Test. c。 gcc测试。c-o测试 测验c: 3:1:警告:
由于各种原因,我的单元测试环境无法访问启动ignite所需的环境。我不需要ignite来启动测试,我希望代码忽略对ignite的调用。开始()。我该怎么做? 我尝试过模拟点火,但当我尝试模拟start()方法时,它会抛出一个错误。 这会导致以下错误: 组织。莫基托。例外情况。误用。MissingMethodInvocationException:when()需要的参数必须是“模拟的方法调用”。例如
问题内容: 我应该把包裹放在哪里,以便可以被另一个包裹导入? 问题答案: 设置您的GOPATH。将软件包foo源放入GOPATH / src / optional-whatever / foo / *。go中,并在代码中使用 你 并不 需要显式地安装foo,那么去工具是一个构建工具,它会做自动的为你需要的时候。
问题内容: 我有一个网站,该网站根据访问者选择的位置显示不同的内容。例如:用户输入55812作为邮政编码。我知道哪个城市和地区纬度/经度。也就是给他们有关该领域的内容。我的问题是如何将其存储在Cookie中,以便他们返回时不需要总是输入邮政编码? 我看到如下: 根据其区域设置持久性cookie。 当他们返回已读取的cookie时,获取邮政编码。 根据Cookie中的邮政编码返回内容。 我似乎找不到
问题内容: 我是量角器的新手,我正在尝试实施e2e测试。我不知道这是否是正确的方法,但是…我要测试的页面不是基于完整角度的页面,所以…我遇到了一些麻烦。 在我的第一个规范中,我有: 我已经创建了这个Login类,但是登录后我想打开联系页面,但是量角器会在页面完全加载之前立即尝试查找元素。 我尝试使用: 但这是行不通的……它总是在页面加载之前尝试查找元素。我也尝试过这个: 我可以使用来做到这一点,但