4
鑑於以下小程序:Java:JOptionPane會影響父JFrame? (包括SSCCE)
import java.awt.BorderLayout;
import java.awt.Rectangle;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Example extends JApplet
{
JPanel aPanel;
@Override
public void init()
{
try
{
javax.swing.SwingUtilities.invokeAndWait(new Runnable()
{
public void run()
{
makeGui();
}
});
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InvocationTargetException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void makeGui()
{
aPanel = new JPanel(new BorderLayout());
this.getContentPane().add(aPanel, BorderLayout.CENTER);
JFrame aTestFrame =new JFrame();
aTestFrame.setBounds(new Rectangle(200,200));
JPanel aTestPanel = new JPanel(new BorderLayout());
aTestPanel.setBounds(new Rectangle(200,200));
aTestFrame.add(aTestPanel);
aTestFrame.setVisible(true);
JOptionPane.showMessageDialog(aTestFrame, "arfarf");
}
}
爲什麼JOptionPane的通話將關閉aTestFrame?如果我忽略了這個調用,2個框架可以正確顯示,但是當我點擊JOptionPane中的OK時,父JFrame就關閉了。
第一個答案是正確的,顯然有一個焦點問題..謝謝!
這並不在我的機器上發生(的Java 6,Windows 7,Eclipse Indigo)。但是,當我在我的機器上單擊「確定」時,Applet窗口會獲得焦點並遮擋aFrame。 –
同S.L. Barth – Mob
通過「第一個答案」 - 你的意思是我的答案或S.L. Barth的評論?你認爲「焦點問題」是什麼意思,因爲我認爲這不是什麼問題。您正試圖從現有的頂層窗口打開第二個頂層窗口,並且應該使用JDialog來實現此目的,以便兩個窗口相關,因此顯示的z順序將是正確的。 –