gpt4 book ai didi

java - 在保留键盘快捷键的同时更改 JOptionPane.YES_NO_OPTION 的默认值?

转载 作者:行者123 更新时间:2023-11-30 02:35:59 25 4
gpt4 key购买 nike

是否有人有创建 JOptionPane(例如 YES_NO_OPTION 对话框)并将默认值更改为“NO”同时保留键盘快捷键的经验?我使用对象数组来填充 {"YES", "NO"} 的选项,然后在 JOptionPane.showOptionDialog 参数中传入这些选项。这可以更改按钮的焦点,但会删除按钮的键盘快捷键。是否有办法在更改焦点的同时保留键盘快捷键?这不是如何默认为“NO”的问题,而是如何维护键盘快捷键的问题。问题“如何使 JOptionPane.showConfirmDialog 默认情况下没有选择?”在询问焦点时,没有人回答如何维护键盘快捷键。这是代码片段...

Object[] options = {"YES", "NO"};
int choice = JOptionPane.showOptionDialog(null, "Please choose yes/no", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]);

最佳答案

我认为没有任何“简单”的方法可以做到这一点。相反,您可能必须提供自己的按钮。

所以基于JOptionPane Passing Custom ButtonsDisable ok button on JOptionPane.dialog until user gives an input ,例如,您可以按照您想要的方式提供自己的 JButton 预配置

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JOptionPane;

public class Test {

public static void main(String[] args) {
JButton btnYes = new JButton("Yes");
btnYes.setMnemonic('s');
btnYes.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(JOptionPane.YES_OPTION);
}
});
JButton btnNo = new JButton("No");
btnNo.setMnemonic('o');
btnNo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(JOptionPane.NO_OPTION);
}
});
JButton[] options = new JButton[] {btnYes, btnNo};

JOptionPane.showOptionDialog(
null,
"Help",
"More",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE,
null, options, btnYes);

}

protected static JOptionPane getOptionPane(JComponent parent) {
JOptionPane pane = null;
if (!(parent instanceof JOptionPane)) {
pane = getOptionPane((JComponent)parent.getParent());
} else {
pane = (JOptionPane) parent;
}
return pane;
}

}

关于java - 在保留键盘快捷键的同时更改 JOptionPane.YES_NO_OPTION 的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43053143/

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