【发布时间】:2020-10-09 14:18:10
【问题描述】:
我最近在学校有一个项目。
-
创建一个带有图像作为背景和一些文本框的 Java GUI。
-
第一个文本框只是一个文本,上面写着:下午 1 点午休。
-
第二个文本框是倒数计时器。此计时器应在即将到来的休息时间结束前 5 分钟出现,该时间从每秒 5:00 到 0:00 分钟倒计时。到达 0:00 时,计时器应响应文本(例如“The 演示即将开始")。
-
图像作为背景:完成
-
文字内容:下午 1 点午休:完成
-
倒计时:我被困在这一点上。我首先在控制台上编写了一个倒数计时器。但我真的不知道如何将此倒计时包含在 Java GUI 中。
你有什么建议吗?
这是我的后台代码:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Toolkit;
import javax.swing.JPanel;
import javax.swing.*;
public class Bildhintergrund extends JFrame{
//Background
public Bildhintergrund () {
setTitle(" Bildhintergrund");
setSize(Toolkit.getDefaultToolkit().getScreenSize());
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(new BorderLayout());
setContentPane(new JLabel(new ImageIcon("/path/to/bild.jpg")));
setLayout(new FlowLayout());
JLabel background = new JLabel();
add(background);
//Text
JLabel text = new JLabel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
}
};
;
JPanel panel = new JPanel();
Dimension size = text.getPreferredSize();
getContentPane().add( text );
text.setFont(text.getFont().deriveFont((float) 58));
text.setText("Lunch break at 1pm");
/*text.setAlignmentX(0);
text.setAlignmentY(0);*/
text.setBounds(300, 300, size.width, size.height);
panel.add(text);
panel.setLayout(null);
add(text);
}
public static void main(String[] args) {
new Bildhintergrund();
}
}
这是我的倒计时代码:
{
/*int Time = 5;
String time;
int seconds;
int minutes;*/
int timet= Time * 60; // Convert to seconds
long delay = timet * 1000;
do
{
minutes = timet / 60;
seconds = timet % 60;
time = minutes + ":" + seconds;
System.out.println(GetTimer());
Thread.sleep(1000);
timet = timet - 1;
delay = delay - 1000;
}
while (delay != 0);
System.out.println("Another topic will follow");
}
public static String GetTimer()
{
return time;
}
}
【问题讨论】:
-
第 1 步:您几乎不应该从字面上倒计时。相反,计算并存储完成时间,并在每次滴答/刷新时计算剩余时间。
-
1) 不要标记 IDE。它与手头的问题无关。 (如果从同一代码的 2 个 IDE 获得不同的结果,您就会知道这一点。) 2) Do 标记swing,因为它与问题非常相关。 3) 为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。删除所有不必要的杂物,如背景和已成功完成的其余部分。仅显示实施倒计时的尝试。 4) 使用逻辑一致的形式缩进代码行和块。缩进是..
-
.. 旨在使代码流更易于遵循!大多数 IDE 都有专门用于格式化代码的键盘快捷键。 5) 请学习常见的 Java 命名法(命名约定 - 例如
EachWordUpperCaseClass、firstWordLowerCaseMethod()、firstWordLowerCaseAttribute,除非它是UPPER_CASE_CONSTANT)并始终如一地使用它。 -
感谢您的发言!我是 Stack Overflow 的新手
-
查看@MadProgrammer 在问题Java Swing Timer Countdown中的回答
标签: java swing user-interface jframe countdown