gpt4 book ai didi

java - YES_NO_OPTION JOptionPane 继续 'yes' 上的 java 代码

转载 作者:行者123 更新时间:2023-12-01 08:46:38 25 4
gpt4 key购买 nike

基本上,我有一个游戏,当发生某些事情时会调出 JOptionPane,我希望能够在用户单击"is"时返回游戏。有点像取消暂停功能

最佳答案

注意:当我发布这个答案时,问题完全不同 - 请阅读评论。

由于 OpenJDK 是开源的(GNU 通用公共(public)许可证版本 2),因此您可以查看其源代码。我通常在 grepcode.com 上浏览 Java 源代码。如果您安装 OracleJDK 并选择安装源代码,您还可以在 JDK 安装目录 (src.zip) 中找到大部分源代码。请注意,该许可证可能不允许您自己重用此代码(通常是相同的)(但它肯定比使用反编译器要好得多)。

这些指向特定方法的链接在我最喜欢的浏览器(Vivaldi,基于 Chrome)中不起作用。如果您不想自己寻找具体方法,我建议您使用Firefox。

以下是来自 grepcode.com 的相关片段:

JOptionPane (constructor) - 每个 show...Dialog 方法都会调用此方法:

1830  public JOptionPane(Object message, int messageType, int optionType,
1831 Icon icon, Object[] options, Object initialValue) {
...
1838 setOptionType(optionType);
...
1841 updateUI();
1842 }

JOptionPane (updateUI) :

1877  public void updateUI() {
1878 setUI((OptionPaneUI)UIManager.getUI(this));
1879 }

在这里我们看到,JOptionPaneUIManager 请求 OptionPaneUIOptionPaneUI 是一个抽象类(看起来更像是一个接口(interface)),因此您在那里找不到任何代码。它唯一的子类是BasicOptionPaneUIMultiOptionPaneUI。使用调试器,我发现它是 showConfirmDialogBasicOptionPaneUI。然后,结果被传递到继承自 JComponentsetUI 方法中。除了一些基本的字段检查之外,它还调用 ui.installUI方法:

137   public void installUI(JComponent c) {
138 optionPane = (JOptionPane)c;
139 installDefaults();
140 optionPane.setLayout(createLayoutManager());
141 installComponents();
142 installListeners();
143 installKeyboardActions();
144 }

让我们看看installComponents下一页:

171   protected void More ...installComponents() {
172 optionPane.add(createMessageArea());
173
174 Container separator = createSeparator();
175 if (separator != null) {
176 optionPane.add(separator);
177 }
178 optionPane.add(createButtonArea());
179 optionPane.applyComponentOrientation(optionPane.getComponentOrientation());
180 }

createButtonArea听起来很有希望:

613   protected Container createButtonArea() {
614 JPanel bottom = new JPanel();
...
630 addButtonComponents(bottom, getButtons(), getInitialValueIndex());
631 return bottom;
632 }

此方法现在调用 addButtonComponents 。此方法太长,无法在此处复制,但简而言之,它获取按钮的特定于区域设置的字符串并将它们添加为 JButton s。然后它给每个人一个 ButtonActionListener .

关于java - YES_NO_OPTION JOptionPane 继续 'yes' 上的 java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614275/

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