gpt4 book ai didi

java - 对话框在没有应用程序的情况下可见。在替代选项卡上

转载 作者:行者123 更新时间:2023-11-30 04:34:36 26 4
gpt4 key购买 nike

我开发了 Swing 应用程序,其中使用 JDialog 来显示弹出窗口。

但问题是,当我按 alt+tab 时,它仅显示对话框而不显示应用程序。我还尝试了对话框模式。

我的要求是,当在应用程序上打开对话框并按 alt+tab 键时,它会切换到另一个 X 应用程序,当我按 alt< 时,它会再次切换到/kbd>+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);
}
}

对话框如下

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ProductDialog extends JDialog
{
private static final long serialVersionUID = 1L;

public ProductDialog()
{
this.add(new JPanel().add(new JLabel("Test")));
this.setSize(150, 100);
this.setModal(true);
this.setLocationRelativeTo(null);
}
}

这是一个小应用程序的视觉效果图。当前在 Windows 7 上的 alt+tab 中显示安全对话框。尽管安全对话框(左上角)仅显示在较小的图标中,但其本身已在屏幕上可见。

enter image description here

最佳答案

您需要将对话框的父窗口设置为应用程序的Frame

小例子:

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();
}
});
}
}

关于java - 对话框在没有应用程序的情况下可见。在替代选项卡上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com