2015-05-09 71 views
0

我无法找到全屏窗口的任何特定解决方案,所以我想问。如何在全屏窗口顶部创建一个JOptionPane?如何使JOptionPane在全屏窗口之上?

在这里,我采取全屏窗口作为构造参数。但是当我按ESC时,我的窗口发送到后台,就像我按下了“Alt + Tab”。然后,如果从开始菜单栏点击,我可以在窗口顶部看到它。但我想结束这个发送背景问题。我该如何解决它?

import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import javax.swing.*; 
import java.awt.*; 

public class KeyListenerTest extends JFrame implements KeyListener { 
    private Window windo; 
    private ImageIcon quitImage; 

    public KeyListenerTest(Window window) 
    { 
    quitImage = new ImageIcon("quitask.png"); 
    windo = window; 
    addKeyListener(this); 
    } 

    public void keyPressed(KeyEvent e) { 
    if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { 
     JOptionPane opti = new JOptionPane(); 
     int choice = opti.showConfirmDialog(windo, "Do you really want to quit?", "QUIT", JOptionPane.YES_NO_OPTION , 
              JOptionPane.QUESTION_MESSAGE , quitImage); 
     opti.requestFocusInWindow(); 
     if(choice == JOptionPane.YES_OPTION) 
     { 
     System.exit(0); 
     } 
     else 
     { 
     dispose(); 
     System.out.println("ESC key typed"); 
     } 
    } 
    } 
    public void keyTyped(KeyEvent e) { 
    } 

    public void keyReleased(KeyEvent e) { 
    } 
} 

这里是我使我的窗口全屏

window=(Window)frame; 
    window.setFocusable(true); 

    KeyListenerTest keyo = new KeyListenerTest(window); 
    frame.addKeyListener(keyo); 

    g.setFullScreenWindow(window); 
+0

不知道它是否会起作用。但是当你显示来自JOptionPane的确认对话框时,将'windo'改为'this'。 –

+0

现在JOptionPane弹出在屏幕中心,但现在我的背景窗口变得不可见。我想看到我的窗口和JOptionPane – BlocBloc

+0

你可以使这个JFrame成为一个JWindow ..你在用背景窗口期待什么。我认为如果你在后台有一个JFrame会很容易.. –

回答

1

使用代码:的

frame.setSize(300, 200); //or any other size you want for JFrame after changeing from maximalized state 
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

代替:

g.setFullScreenWindow(window); 

为我工作。

+0

它现在正在工作,谢谢! – BlocBloc

+0

@BlocBloc根据大小设置一个窗口来填充整个屏幕的方式与设置为全屏模式不同。 – user1803551

+0

有什么不同,请问? – BlocBloc