java 用JOptionPane.showMessageDialog(null, "获取成功!"); 打开的对话框 如何设置为3秒之后自动关闭
答案:4 悬赏:0 手机版
解决时间 2021-12-01 03:39
- 提问者网友:回忆在搜索
- 2021-11-30 22:08
java 用JOptionPane.showMessageDialog(null, "获取成功!"); 打开的对话框 如何设置为3秒之后自动关闭
最佳答案
- 五星知识达人网友:罪歌
- 2021-11-30 22:59
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();追问不好意思,前会我的表述有错误。 我做的是一个工具界面的测试。在被测试的方法里面有JOptionPane.showMessageDialog(null, "获取成功!");这个方法,只要我调用被测试方法,这个就提示框就会自动跳出来。我要在不改变源代码的情况下,在测试方法里面把这个提示框给自动关掉,请问有什么方法解决么。急急急。。!!追答这个好像不行,我是没办法实现你的要求了,因为JOptionPane.showMessageDialog这是一个线程阻塞的操作,它会一直等一个按钮的点击操作。或者你可以试试用代码模拟点击操作。
如果非要做测试,可以稍微的改下源代码,直接跳过JOptionPane.showMessageDialog的操作而直接给一个选定值追问OK了。但是现在又遇到个难题。那就是怎么获取提示框上按钮的坐标。还请不吝赐教。谢谢!!追答取提示框坐标?你要这功能干什么?提示框出来后是当前线程的阻塞,不能进行别的操作。而且JOptionPane.showMessageDialog是静态方法返回的是一个int值不是一个对象,所以正常的方法是取不到内容按钮的坐标的。有变通的方法来取,可那太麻烦而且也很笨拙追问因为要解决之前这个问题的话。 就必须要获取按钮的坐标,然后我让自己添加的模拟点击方法去点击获取的的按钮的坐标,那不就成功的让提示框关闭了呀。 所以这个方法也是现在我处理这个问题的唯一方法,至少目前我考虑的只有这样。还请大哥给点思路。这个问题都困扰我几天了。麻烦麻烦!! 解决了我追加悬赏。
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的操作而直接给一个选定值追问OK了。但是现在又遇到个难题。那就是怎么获取提示框上按钮的坐标。还请不吝赐教。谢谢!!追答取提示框坐标?你要这功能干什么?提示框出来后是当前线程的阻塞,不能进行别的操作。而且JOptionPane.showMessageDialog是静态方法返回的是一个int值不是一个对象,所以正常的方法是取不到内容按钮的坐标的。有变通的方法来取,可那太麻烦而且也很笨拙追问因为要解决之前这个问题的话。 就必须要获取按钮的坐标,然后我让自己添加的模拟点击方法去点击获取的的按钮的坐标,那不就成功的让提示框关闭了呀。 所以这个方法也是现在我处理这个问题的唯一方法,至少目前我考虑的只有这样。还请大哥给点思路。这个问题都困扰我几天了。麻烦麻烦!! 解决了我追加悬赏。
全部回答
- 1楼网友:空山清雨
- 2021-12-01 01:11
如果是测试,模拟一个esc键盘事件就是了。
- 2楼网友:未来江山和你
- 2021-11-30 23:57
楼上的兄弟说模拟一个键盘事件,我这样做成了,贴一下代码出来分享一下。
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, "设定成功");
这两句话的顺序不能写反。
- 3楼网友:几近狂妄
- 2021-11-30 23:06
用JOptionPane.createDialog 得到一个JDialog 。JDialog .show显示出来
用定时器Timer,定一个TimerTask在3秒钟后执行JDialog.hide()隐藏不显示和JDialog .dispose释放追问不好意思,前会我的表述有错误。 我做的是一个工具界面的测试。在被测试的方法里面有JOptionPane.showMessageDialog(null, "获取成功!");这个方法,只要我调用被测试方法,这个就提示框就会自动跳出来。我要在不改变源代码的情况下,在测试方法里面把这个提示框给自动关掉,请问有什么方法解决么。急急急。。!!
用定时器Timer,定一个TimerTask在3秒钟后执行JDialog.hide()隐藏不显示和JDialog .dispose释放追问不好意思,前会我的表述有错误。 我做的是一个工具界面的测试。在被测试的方法里面有JOptionPane.showMessageDialog(null, "获取成功!");这个方法,只要我调用被测试方法,这个就提示框就会自动跳出来。我要在不改变源代码的情况下,在测试方法里面把这个提示框给自动关掉,请问有什么方法解决么。急急急。。!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯