Java 对话框在没有应用程序的情况下可见。在alt选项卡上
我已经开发了Swing应用程序,其中我使用了Java 对话框在没有应用程序的情况下可见。在alt选项卡上,java,swing,jdialog,Java,Swing,Jdialog,我已经开发了Swing应用程序,其中我使用了JDialog来显示弹出窗口 但问题是,当我按下alt+tab时,它只显示对话框,而不显示应用程序。我还尝试了对话模式 我的要求是,当对话框在应用程序上打开时,我按下alt+tab键,它将切换到另一个X应用程序,再次按下alt+tab键,它将显示在我的应用程序上打开的对话框。当前显示的对话框已打开,但未单独与应用程序一起打开 如何使用JDialog满足此要求 下面是示例代码 import java.awt.event.ActionEvent; impo
JDialog
来显示弹出窗口
但问题是,当我按下alt+tab时,它只显示对话框,而不显示应用程序。我还尝试了对话模式
我的要求是,当对话框在应用程序上打开时,我按下alt+tab键,它将切换到另一个X应用程序,再次按下alt+tab键,它将显示在我的应用程序上打开的对话框。当前显示的对话框已打开,但未单独与应用程序一起打开
如何使用JDialog
满足此要求
下面是示例代码
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*$Id$
*/
public class Main
{
public static void main(final String[] args)
{
final JFrame jFrame = new JFrame();
jFrame.setSize(300, 200);
final JPanel panel = new JPanel();
final JButton button = new JButton("click here to open dialog");
final ProductDialog dialog = new ProductDialog();
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(final ActionEvent e)
{
dialog.setVisible(true);
}
});
panel.add(button);
jFrame.add(panel);
jFrame.setVisible(true);
}
}
对话框如下所示
下面是一个小应用程序的视觉效果图片。当前正在Windows 7上的alt+tab中显示安全对话框。应用程序。虽然安全对话框(左上角)显示在较小的图标中,但它本身在屏幕上已经可见
您需要将对话框的父窗口设置为应用程序的
框架
小例子:
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class TestDialog {
protected void initUI() {
JFrame frame = new JFrame(TestDialog.class.getSimpleName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JButton button = new JButton("Click me to open dialog");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Window parentWindow = SwingUtilities.windowForComponent(button);
JDialog dialog = new JDialog(parentWindow);
dialog.setLocationRelativeTo(button);
dialog.setModal(true);
dialog.add(new JLabel("A dialog"));
dialog.pack();
dialog.setVisible(true);
}
});
frame.add(button);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestDialog().initUI();
}
});
}
}
我已将父帧传递给对话框,如下所示。
final ProductDialog dialog = new ProductDialog(jFrame);
import java.awt.Dialog;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ProductDialog extends JDialog
{
private static final long serialVersionUID = 1L;
public ProductDialog(final JFrame jFrame)
{
super(jFrame);
this.add(new JPanel().add(new JLabel("Test")));
this.setSize(150, 100);
this.setModal(true);
this.setModalityType(Dialog.ModalityType.DOCUMENT_MODAL);
}
}
并将其设置为
以父窗口为参数调用super类的构造函数,并设置对话框的模态类型,这是我的工作。
final ProductDialog dialog = new ProductDialog(jFrame);
import java.awt.Dialog;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ProductDialog extends JDialog
{
private static final long serialVersionUID = 1L;
public ProductDialog(final JFrame jFrame)
{
super(jFrame);
this.add(new JPanel().add(new JLabel("Test")));
this.setSize(150, 100);
this.setModal(true);
this.setModalityType(Dialog.ModalityType.DOCUMENT_MODAL);
}
}
这只是我为测试而创建的示例。请在实例化的地方发布代码并打开对话框。为了获得更好的帮助,请尽快发布一个简短、可运行、可编译的JDialog,快捷键alt+tab和空应用程序窗口--我只希望整个应用程序的一个窗口和对话框显示在alt+tab窗口中,与一个是应用程序,一个是对话框没有区别。@Tejas当我使用alt+tab时,我只看到Java应用程序的一个窗口。我不明白我的答案怎么会不符合你的要求。当你看你的答案时,我看不出它和我的有什么不同。
final ProductDialog dialog = new ProductDialog(jFrame);
import java.awt.Dialog;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ProductDialog extends JDialog
{
private static final long serialVersionUID = 1L;
public ProductDialog(final JFrame jFrame)
{
super(jFrame);
this.add(new JPanel().add(new JLabel("Test")));
this.setSize(150, 100);
this.setModal(true);
this.setModalityType(Dialog.ModalityType.DOCUMENT_MODAL);
}
}