gpt4 book ai didi

java - 如何用java制作一个 “do not ask me again”的对话框弹出框?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:57 26 4
gpt4 key购买 nike

在我的程序的一部分中,我使用 JOptionPane 询问用户是否确定他将要做什么。但我不想让用户每次尝试都这样问,所以我喜欢使用 android 中带有“不再询问”的一些对话框的功能,但不知道如何在我的程序中实现它,这里有人可以帮助我吗?(应该有西类牙语 StackOverflow)这是我的代码

if (jCheckBox2.isSelected() && jCheckBox1.isSelected()){
JOptionPane.showConfirmDialog(null, "This action can cause problems, want to do it?");
//here must be something to never ask again this

}

最佳答案

基本思想是利用 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 作为后备存储,您可以使用数据库或其他持久方法(PreferencesXML 等)

然后你就可以像这样使用它了......

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);

如果您在第一次提示时选择“不再询问我”,那么第二次调用将返回之前选择的值

现在,在某个地方,您可能希望能够扭转这些决定;)

关于java - 如何用java制作一个 “do not ask me again”的对话框弹出框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com