Java实现弹窗JOptionPane类使用

项目中现有一个接口直接操作修改redis的一个值,由于是方便运维操作直接给的get接口,url中直接传递参数值,现在提出直接get接口操作就修改风险较大,需要给出一个提示框再次确认。

实现方式

  • 采用Java的JOptionPane类来实现( javax.swing.JOptionPane)
    Java Swing弹出对话框之确认对话框ConfirmDialog

  • 加入确认框后需要对其添加验证操作才能够有效地进行确认操作

int op=JOptionPane.showConfirmDialog(null, "是否确认修改系统启动时间为"+time, "提示", JOptionPane.OK_CANCEL_OPTION);
if(op==JOptionPane.OK_OPTION){
    redisUtils.set(CommonConstants.REDIS_SYSTEM_RUN_TIME, time, RedisUtils.NOT_EXPIRE);
    return Ret.ok("修改成功");
}else if(op==JOptionPane.CANCEL_OPTION){
    return Ret.ok("取消");
}

问题及解决

  • 遇到的问题
    导入JOptionPane后运行项目报错 java.awt.HeadlessException: null

  • 解决方法
    1.点击编辑配置,在虚拟机选项框中添加:-Djava.awt.headless=false
    Java实现弹窗JOptionPane类使用_第1张图片

2.方法一在打jar包的时候仍然会报错,maven打包时默认这个配置不会添加,可以在启动类中修改

@SpringBootApplication(scanBasePackages = "cn.nr")
@EnableScheduling
public class CoreApplication {
    public static void main(String[] args) {
        SpringApplicationBuilder builder = new SpringApplicationBuilder(CoreApplication.class);
        builder.headless(false).run(args);
    }
}

3.修改maven打包配置
maven打包配置修改解决报错java.awt.headless

标题页面显示友好优化

  • 字体样式
    原弹框很小,且提示内容字体也很小,改变字体后弹框大小也会相应改变,对饮修改代码如下
//字体样式
Font font = new Font("黑体",0,24);
UIManager.put("OptionPane.font", font);
UIManager.put("OptionPane.messageFont", font);
UIManager.put("OptionPane.buttonFont", font);

int op=JOptionPane.showConfirmDialog(null, "是否确认修改系统启动时间为" + time + "\r\n\r\n\r\n", "提示", JOptionPane.OK_CANCEL_OPTION);
if(op==JOptionPane.OK_OPTION){
    redisUtils.set(CommonConstants.REDIS_SYSTEM_RUN_TIME, time, RedisUtils.NOT_EXPIRE);
    return Ret.ok("修改成功");
}
return Ret.ok("取消修改");
  • 提示框大小修改
    改变JOptionPane.showInputdialog()对话框的大小

你可能感兴趣的:(项目问题,java)