- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在stopclock
应用程序中添加了两个按钮;一个用于开始,另一个用于停止。开始有效,但停止无效。我为此使用了一个线程。
代码还创建了两个框架,如何避免这种情况?
我们有四个类:一个主要类,两个用于实现两个按钮的 actionListener
,另一个用于实现线程。
import java.awt.*;
import java.awt.event.*;
public class stopclock
{
Frame f;
Panel p;
Button b1,b2;
Label l;
stopclock(boolean k)
{
f=new Frame();
p=new Panel();
b1=new Button("Start");
b2=new Button("Stop");
l=new Label("00:00:00");
p.add(l);
p.add(b1);
p.add(b2);
f.add(p);
f.setTitle("Stop Clock");
f.setSize(300,300);
f.setVisible(true);
b1.addActionListener(new one());
b2.addActionListener(new two());
}
public static void main(String[] args)
{
stopclock s=new stopclock(false);
}
}
class one implements ActionListener
{
//Thread th=new Thread();
public void actionPerformed(ActionEvent ae)
{
new th().start();
}
}
class two implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
th run=new th();
Thread anb=new Thread(run);
anb.suspend();
}
}
class th extends Thread
{
int sec=0;
int hr=0;
int min=0;
public void run()
{
stopclock st=new stopclock(true);
//System.out.println("Hello");
//st.f.setVisible(true);
Label l2=st.l;
try
{
while(true)
{
if(sec>59)
{
min++;
sec=0;
}
if(min>59)
{
hr++;
min=0;
}
if(hr>12)
{
hr=0;
}
sec++;
String str=hr+":"+min+":"+sec;
l2.setText(str);
th.sleep(1000);
}
}
catch (Exception e)
{
System.out.println(e);
}
}
}
最佳答案
我将您的组件更改为 Swing 组件。您获得 2 帧是因为您在线程内使用 stopclock st = new stopclock(true)
创建一个新帧。此外,为此使用 Thread 会遇到很多麻烦。我使用了 Swing Timer
来代替:
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class StopClock {
JLabel label = new JLabel("00:00:00");;
Timer timer = new Timer(1000, new TimerListener());
StopClock() {
JButton startButton = new JButton("Start");
JButton stopButton = new JButton("Stop");
startButton.addActionListener(new StartActionListener());
stopButton.addActionListener(new StopActionListener());
JPanel panel = new JPanel();
panel.add(label);
panel.add(startButton);
panel.add(stopButton);
JFrame frame = new JFrame();
frame.add(panel);
frame.setTitle("Stop Clock");
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> new StopClock());
}
class StartActionListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
timer.start();
}
}
class StopActionListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
timer.stop();
}
}
class TimerListener implements ActionListener {
int sec = 0;
int hr = 0;
int min = 0;
@Override
public void actionPerformed(ActionEvent e) {
if (sec > 59) {
min++;
sec = 0;
}
if (min > 59) {
hr++;
min = 0;
}
if (hr > 12) {
hr = 0;
}
sec++;
String str = hr + ":" + min + ":" + sec;
label.setText(str);
}
}
}
有些事情可以改进,但我尽力使其接近您所写的内容。
注释:
boolean
参数。pack()
而不是 setSize(...)
。setVisible(...)
。关于java - 按钮 b2 =stop 未监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34370903/
我经常使用stop Fortran 中固有的因各种原因停止执行(主要是在测试失败后)。 program test1 stop end program 除了停止程序执行之外什么都不做。 prog
我想编写一个函数,用字符 e 替换所有出现的字符 c。这些功能似乎正在发挥作用。然而,主要是,我希望能够重复输入一个字符串,扫描要替换的字符,扫描要替换的字符,并打印之前和之后的内容,直到输入的字符串
在 powershell 中,我看到了多种停止服务的方法 更现代的方式 Stop-Service wuauserv 而更传统的方式 NET STOP WUAUSERV 遗留方式 is much mor
所以问题是我需要一个正则表达式,只有当它的 stop 也意味着 stopp 或 sstoooppp 时,它才会匹配第二个单词> 后跟一个空格。我需要得到这个词,我找不到任何正则表达式来做到这一点,因为
我正在做这样的事情 http://jsfiddle.net/8ErSL/2/ 当您将鼠标悬停在任何文本框 (div) 上时,其中会出现一个小图标。 我想阻止图标的淡入淡出效果在我不小心将鼠标悬停在 d
这段代码在 Debug模式下工作得很好,但当不是 Debug模式时它总是抛出运行时异常。 mMediaRecorder.stop(); 根据 Java 文档: Stops recordin
这是我的full code ,这里是my project ,当我在 #onCreate 中使用 MediaRecorder#stop 时,它会引发 java.lang.RuntimeException
我使用 C# 编写了一个库并在 PowerShell 脚本中使用它。 C# 库将大量数据加载到数据库中。我正在使用 Start-Job 来启动该过程,并且我正在监视一个文件是否有错误。 但是,我发现即
我正在尝试编写以下问题的代码: 在 a0, a1, ..., an 处有 n 个酒店,使得 0 dp(k)+(ai-ak)^2) dp(i) = dp(k)+(ai-ak)^2)
我有一个简单的测试,我使用 run_forever 方法运行 Python asyncio 事件循环,然后立即在另一个线程中停止它。但是,事件循环似乎并没有终止。我有以下测试用例: import as
我有以下情况: 专用租赁 m4.large 运行 RHEL6 的 EC2 实例 使用 AWS 控制台手动启动它效果很好 尝试启动它的 Lambda 函数(用 Java 编写)失败,因为实例状态为:已停
我正在使用 Yajsw 将我的应用程序作为守护进程运行。 对于状态调用,我希望看到“正在运行”或“已停止”,但我收到的消息如下所示 SW043305-SRV01:/etc/init.d # ./tes
在 Tomcat 或 TomEE 中,service tomcat start/stop 和 ./catalina.sh run/stop 有什么区别? 他们做的事情完全一样吗? 最佳答案 catal
我正在尝试使用 C++ 和 OpenGL/GLUT 制作一个 Snake 克隆。然而,我一直在编程允许输入 Action 之间的短时间间隔时遇到问题。我已经尝试了一些计时方法,最后我为它创建了一个类(
问题: org.apache.catalina.loader.WebappClassLoader - The web application [/…] appears to have started
我正在尝试以下实验: 我有两个QpushButtons,比如PushA 和PushB。现在 PushA 在 QHBoxLayout 中,PushB 也在它自己的 QHBoxLayout 中。这两个水平
我已经在我的 windows 10 机器上安装了 Docker for Windows。当我尝试从“windows 容器”“切换到 linux 容器”时,出现错误。 Unable to start:
我在我的应用程序中集成了摄像头。当用户单击捕获按钮时,我隐藏了工具栏,以便摄像头预览屏幕尺寸增加。这会导致应用程序在停止在线录制时崩溃 - mMediaRecorder.stop(); 。 java.
运行功能时 stop("m Sys.setenv(LANG = "fr") > 2 + x Erreur : objet 'x' introuvable > Sys.setenv(LANG = "en
我有一个 Windows 10 内部版本,我正在尝试安装 cpriego/valet-linux使用 wsl2 我已经安装了 composer、php 和所有其他的要求。 现在当我做 valet st
我是一名优秀的程序员,十分优秀!