- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法在 Mac (v10.9.5) 中获取消息框和某种程度上的对话框以正常显示/运行。
我刚刚将 JRE 和 JDK 更新到最新版本 (8u31)。终端窗口中的“java -version”显示我确实在使用 8u31。 (我之前使用的是 8u20,表现出相同的行为。)
下面的代码在 Windows 和我测试的几个不同版本的 Linux 中完美运行,没有问题。我只是在 Mac 上遇到问题。我将我的代码(基于 SWT,但此示例使用 Swing)简化为以下内容:
package myTest;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class EntryCode
{
public static EntryCode oEntryCode;
public EntryCode()
{
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
oEntryCode = new EntryCode();
oEntryCode.open();
}
public void open()
{
JPanel panel = new JPanel();
panel.setMinimumSize(new Dimension(200,200));
JFrame frame = new JFrame("JOptionPane showMessageDialog component example");
System.out.println("open(): entry - With frame");
JOptionPane.showConfirmDialog(frame, "Wow, works on the Mac!", "Inside open()", JOptionPane.YES_NO_OPTION);
System.out.println("Point 1");
System.exit(0);
}
}
我看到第一个系统输出行,代码卡在消息框请求上。在实际代码中,我只是使用 null 作为第一个参数。此测试代码的原始版本也使用了 null,只是我正在尝试指定一个组件。我认为这可能是问题所在。它不是。
在显示 SWT 对话框时,有点击按钮会挂起界面的倾向。挂起介于按钮被按下和事件处理程序触发之间。事件处理程序永远不会触发。
我没有在此处包含对话框。我认为由于我的确认/消息框显示了解决一个问题的相同问题,所以免费获得另一个。
我在 Google 上搜索了在 Mac 上显示 java 应用程序,但没有找到任何结果。
我认为将 JRE/JDK 更新到最新版本可以解决任何与操作系统相关的问题。
我将代码编译成一个 jar 并使用以下命令从终端窗口运行。我按 Ctrl+C 来退出挂起的应用程序。
java -XstartOnFirstThread -jar myTest.jar
想法?
更新:
我删除了原来的更新但留下了原来的问题,现在我对问题有了更好的理解。
真正的问题是如何启动一个适当的 Mac OSX Cocoa 限制友好的 SWT 应用程序,它使用对话框和消息框。 (据我所知,显示消息框的唯一方法是使用 JOptionPane.show*,它是 Swing 的东西,因此有点混合了 Swing 和 SWT。
有趣的是,问题总是与按钮有关,无论是对话框(纯 SWT 实现)还是消息框。在前者中,问题是调用事件处理程序挂起,而后者显示消息框(第一个参数为空,因为 SWT 应用程序中不存在 Swing 框架)。
最佳答案
问题可能是您没有在 EDT 中启动 GUI。试试这个:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
oEntryCode = new EntryCode();
oEntryCode.open();
}
});
}
更多信息:http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
另一个问题是在 Swing 中使用 -XstartOnFirstThread
。 Swing 的作用与 -XstartOnFirstThread
的作用相同,但以其自己的方式。您不应该将 -XstartOnFirstThread
与 Swing 一起使用,因为混合使用 SWT 和 Swing 不是一个好主意。
如果您添加 SwingUtilities.invokeLater()
并删除 -XstartOnFirstThread
,您的示例应该会正常运行。
关于java - 让 JOptionPane.showConfirmDialog() 在 Mac OSX 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571583/
我有一个 Java 程序。当我运行该程序时,它会给我一个我附加的 GUI。 当我想关闭它时,它会弹出一个确认对话框。如果我按下 Yes 按钮,它将使用 System.exit() 退出程序。 publ
正如我的标题所述,每当我调用它时,我的 showConfirmDialog 都不会等待按下"is"或“否”按钮。 最初我遇到了一个错误,导致我获得空白的 JOptionPanes,所以现在我使用 in
我正在尝试编写一个非常简单的二十一点游戏。 这是应该显示当前绘制的牌的类: import javax.imageio.ImageIO; import javax.swing.*; import jav
JOptionPane.showConfirmDialog 弹出窗口(Y/N 对话框)阻止访问同一应用程序的其他窗口。 (不用说,我知道这个对话的本质是阻止其他窗口,但我不希望这个应用程序使用它)。在
我正在尝试在对话框中使用 JButton 的工具提示功能。我正在使用 showconfirmDialog 功能。代码是这样的 int optionSelection = javax.swing.JO
我想创建一个带有计时器的 JOptionPane.showConfirmDialog。默认选项将是退出。但是,如果我单击"is"选项,它应该继续工作,如果我单击“否”选项,它应该退出。如果我不点击任何
我想在用户想要关闭框架窗口时提示他们进行确认,如下所示: addWindowListener(new WindowAdapter() { public void windowClosing(W
这是下面的代码片段,我想通过将其父级设置为 resultsTablePanel 使用 JOptionPane.showConfirmDialog() 显示对话框: public class Searc
当用户输入密码并单击“确定”按钮时,密码将被加密并存储在JTextArea 中。这工作正常。但我想在 showConfirmDialog 和 showMessageDialog 弹出窗口中添加自定义
我正在使用 JOptionPane.showConfirmDialog 在 Java 中显示确认对话框。该对话框向用户显示是否确认。这被称为如下: int result = JOptionPane.s
如果我有这样的问题 someMethod(JOptionPane.showConfirmDialog(null, "Are you enrolled in a University?")); 我想将答
我只需要在 showConfirmDialog 中有一个按钮。 我试过这个: int response = JOptionPane.showConfirmDialog(null, "Time Ente
无论我做什么,“NO”部分都不起作用,我尝试过另一个 if、else if、else、括号、无括号。无论我点击什么,它都只会打印 hello。如果我按“否”,我希望系统退出 import javax.
JOptionPane.showConfirmDialog(this, message,
我有一个充满 JLabels、JTextFeilds 和 Button 的 JOptionPane,但对话框中的内容太多,以至于它开始变得比我的屏幕还要大。 如何缩小对话框并向 JOptionPane
我目前正在制作一个简单的程序,并且遇到了一个错误,这可能是一个错误。我有一个 showConfirmDialog 命令,我希望回答“否”来退出应用程序,回答"is"来继续应用程序。但问题是"is"和“
调用JOptionPane类的showConfirmDialog()方法时,如何修改弹出对话框的大小? 最佳答案 您可以创建 JPanel 并覆盖它的 getPreferredSize 方法并返回一些
我正在显示一个带有一些输入字段的确认对话框。当保存失败(验证失败)时,我想显示一个消息对话框,但我不希望确认对话框消失。我该怎么做? 下面是我打开ConfirmDialog的actionPerform
使用 JOptionPane.showConfirmDialog 进行多个输入: int result = JOptionPane.showConfirmDialog(null, panel,
我在 JOptionPane.showConfirmDialog 中有一个 JPanel。我想将“是/否/取消”按钮更改为自定义值,但不确定如何更改。 private void display
我是一名优秀的程序员,十分优秀!