我無法獲取消息框和度數對話框以在Mac(v10.9.5)中正常顯示/運行。獲取JOptionPane.showConfirmDialog()在Mac OSX上運行
我剛更新了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罐子myTest.jar
的思考?
UPDATE:
我刪除了原來的更新,但我離開了原來的問題,現在我明白這個問題更好。
真正的問題是如何啓動一個適當的Mac OSX Cocoa限制友好的SWT應用程序,它使用對話框和消息框。 (據我所知,顯示消息框的唯一方法是使用JOptionPane.show *,這是一個Swing的東西,因此可以將Swing和SWT混合起來。
有趣的是,問題始終存在與對話框(純粹是SWT實現)或消息框有關,前者的問題是調用事件處理程序的掛起,後者顯示消息框(null爲第一個參數,因爲不存在Swing框架。在SWT應用程序)
我可以在30分鐘內在我的Mac上進行測試。那麼我會盡快回復你。哦,也請確保你沒有設置任何斷點。 – dehlen 2015-02-18 16:11:37
謝謝,但我沒有在Mac上運行Eclipse內部的代碼。我在Windows上構建代碼並使用Ant構建一個jar文件。然後將TeamViewer導入Mac並將jar文件複製到一個文件夾中。然後我使用「java -XstartOnFirstThread -jar」從終端窗口啓動應用程序。沒有Eclipse,所以不可能設置斷點。 –
2015-02-18 16:17:26
我剛剛編譯&在我的Mac上運行你的程序,一切正常。看起來像你的Mac/Java設置是錯誤的。 – dehlen 2015-02-18 16:56:12