java 用JOptionPane.showMessageDialog(null, "获取成功!"); 打开的对话框 如何设置为3秒之后自动关闭
4个回答
展开全部
showMessageDialog没有这个功能,自己定义下才行
JDialog jDialog =new JDialog();
jDialog.add(new JLabel("test"));
jDialog.setSize(300, 100);
jDialog.setLocationRelativeTo(null);
jDialog.setVisible(true);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
jDialog.dispose();
JDialog jDialog =new JDialog();
jDialog.add(new JLabel("test"));
jDialog.setSize(300, 100);
jDialog.setLocationRelativeTo(null);
jDialog.setVisible(true);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
jDialog.dispose();
更多追问追答
追问
不好意思,前会我的表述有错误。 我做的是一个工具界面的测试。在被测试的方法里面有JOptionPane.showMessageDialog(null, "获取成功!");这个方法,只要我调用被测试方法,这个就提示框就会自动跳出来。我要在不改变源代码的情况下,在测试方法里面把这个提示框给自动关掉,请问有什么方法解决么。急急急。。!!
追答
这个好像不行,我是没办法实现你的要求了,因为JOptionPane.showMessageDialog这是一个线程阻塞的操作,它会一直等一个按钮的点击操作。或者你可以试试用代码模拟点击操作。
如果非要做测试,可以稍微的改下源代码,直接跳过JOptionPane.showMessageDialog的操作而直接给一个选定值
展开全部
楼上的兄弟说模拟一个键盘事件,我这样做成了,贴一下代码出来分享一下。
1,在要调用键盘事件的包里建立一个类,代码:
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class PressESC implements Runnable{
Robot robot;
public PressESC(Robot robot){
this.robot = robot;
}
public void run() {
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.delay(150);
robot.keyRelease(KeyEvent.VK_ESCAPE);
}
}
2,在要调用这个pressESC的类(ClassTest)中创建Robot 类:
try {
Robot robot = new Robot();
} catch (Exception e) {
}
3,在弹出信息前创建新线程,调用这个键盘事件:
(new Thread(new PressESC(ClassTest.robot))).start();
JOptionPane.showMessageDialog(null, "设定成功");
这两句话的顺序不能写反。
1,在要调用键盘事件的包里建立一个类,代码:
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class PressESC implements Runnable{
Robot robot;
public PressESC(Robot robot){
this.robot = robot;
}
public void run() {
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.delay(150);
robot.keyRelease(KeyEvent.VK_ESCAPE);
}
}
2,在要调用这个pressESC的类(ClassTest)中创建Robot 类:
try {
Robot robot = new Robot();
} catch (Exception e) {
}
3,在弹出信息前创建新线程,调用这个键盘事件:
(new Thread(new PressESC(ClassTest.robot))).start();
JOptionPane.showMessageDialog(null, "设定成功");
这两句话的顺序不能写反。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用JOptionPane.createDialog 得到一个JDialog 。JDialog .show显示出来
用定时器Timer,定一个TimerTask在3秒钟后执行JDialog.hide()隐藏不显示和JDialog .dispose释放
用定时器Timer,定一个TimerTask在3秒钟后执行JDialog.hide()隐藏不显示和JDialog .dispose释放
追问
不好意思,前会我的表述有错误。 我做的是一个工具界面的测试。在被测试的方法里面有JOptionPane.showMessageDialog(null, "获取成功!");这个方法,只要我调用被测试方法,这个就提示框就会自动跳出来。我要在不改变源代码的情况下,在测试方法里面把这个提示框给自动关掉,请问有什么方法解决么。急急急。。!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是测试,模拟一个esc键盘事件就是了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询