java窗口问本人框怎么添加_如何用java创建一个“不要再问我”对话框弹出框?...

基本思想是利用message参数实际上可以是Component的事实.然后问题归结为检查用户是否选择了“不要再问我”选项,存储并重新使用它

就像是…

import java.awt.BorderLayout;

import java.awt.Component;

import java.awt.FlowLayout;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Reader;

import java.io.Writer;

import java.util.Properties;

import javax.swing.JCheckBox;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

public class DontAskMeAgainPanel extends JPanel {

private JCheckBox dontAskMeAgain;

public DontAskMeAgainPanel(Object message) {

setLayout(new BorderLayout());

if (message instanceof Component) {

add((Component) message);

} else if (message != null) {

add(new JLabel(message.toString()));

}

dontAskMeAgain = new JCheckBox("Don't ask me again");

JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));

panel.add(dontAskMeAgain);

add(panel, BorderLayout.SOUTH);

}

public boolean dontAskMeAgain() {

return dontAskMeAgain.isSelected();

}

private static Properties settings;

protected static void loadProperties() {

if (settings != null) {

settings = new Properties();

File source = new File("...");

if (source.exists()) {

try (Reader r = new FileReader(source)) {

settings.load(r);

} catch (IOException exp) {

exp.printStackTrace();

}

}

}

}

protected static void saveProperties() {

if (settings != null) {

settings = new Properties();

File source = new File("...");

try (Writer w = new FileWriter(source)) {

settings.store(w, "Don't prompt for settings");

} catch (IOException exp) {

exp.printStackTrace();

}

}

}

public static int showConfirmDialog(Component parent, Object message, String key) {

loadProperties();

int result = JOptionPane.NO_OPTION;

if (settings.containsKey(key + ".prompt") && !Boolean.parseBoolean(settings.getProperty(key + ".value"))) {

result = Integer.parseInt(settings.getProperty(key + ".value"));

} else {

DontAskMeAgainPanel panel = new DontAskMeAgainPanel(message);

result = JOptionPane.showConfirmDialog(parent, panel);

if (panel.dontAskMeAgain()) {

settings.put(key + ".prompt", "false");

settings.put(key + ".value", Integer.toString(result));

saveProperties();

}

}

return result;

}

}

作为一个基本出发点.为简单起见,我使用了Properties作为后备存储,你可以使用数据库或其他持久化方法(Preferences,XML等)

然后你就可以使用它……

int result = DontAskMeAgainPanel.showConfirmDialog(null, "This is annoying", "Annoying");

System.out.println("You selected " + result);

result = DontAskMeAgainPanel.showConfirmDialog(null, "This is annoying", "Annoying");

System.out.println("Then you selected " + result);

如果在第一个提示中选择“不要再问我”,则第二个调用将返回先前选择的值

现在,在某个地方,你可能希望有能力扭转这些决定;)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值