gpt4 book ai didi

Java 全屏模式对话框

转载 作者:行者123 更新时间:2023-11-30 05:57:13 26 4
gpt4 key购买 nike

如何创建可用作内部对话框的自定义模式 JDialog?用于全屏独占模式。

我有一个 JScrollPane(带有一个巨大的滚动条),里面充满了巨大的按钮,如下所示:

+----------------------+------+
| FOO | /\ |
|______________________+------+
| |______|
| BAR | |
|______________________| == |
| |______|
| BIZ | |
+______________________+------+
| | \/ |
|----------------------+------+

我需要用户使用巨大的滚动条滚动并点击特定按钮来选择它并关闭对话框。该对话框处于全屏独占模式。需要禁用关闭按钮,并且不需要有“确定”或“取消”按钮,无论单击哪个按钮都需要更新值,然后在对话框上调用frame.dispose()。

现在我正在使用内部框架,但该框架不会在其他所有内容前面弹出,因为我没有使用 JDesktop。我也尝试过 JDialog,但它最小化了应用程序。

JOptionPane.showInternalDialog() 可以工作,但是如何以相同的方式构造我自己的内部对话框以便可以显示它们?如果我制作一个内部框架,然后将其添加到一个组件中,它只会位于该组件内,而不是位于所有组件之上。

编辑:查看了这些类并尝试了弹出窗口工厂,但弹出窗口似乎无法在全屏下可靠地工作。

编辑:尝试 JOptionPane.createInternalFrame() 这是我正在使用的演示,但它似乎尚未工作。

public class FullscreenDialog {

public static final void main(final String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//uses os window manager

JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(800,600));

final JLabel label = new JLabel("Something to say.");
panel.add(label);
final JFrame fullscreenFrame = new JFrame();
fullscreenFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
fullscreenFrame.setUndecorated(true);//To remove the bars around the frame.
fullscreenFrame.setResizable(false);//resizability causes unsafe operations.
fullscreenFrame.setContentPane(panel);
fullscreenFrame.validate();
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(fullscreenFrame);//actually applies the fullscreen.

final JOptionPane optionPane = new JOptionPane();
optionPane.add(new JLabel("Some alert"));
final JButton button = new JButton();
button.setText("Press me.");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
label.setText("worked");
optionPane.setValue(button);
}
});
JInternalFrame frame = optionPane.createInternalFrame(panel, "Internal Dialog");
frame.setVisible(true);
}
}

最佳答案

JOptionPane 构造函数的 message 参数可以是 Component 以及字符串,例如它可能是您的 JScrollPane

要从选项 Pane 中删除标准按钮,请使用空数组调用 setOptions(Object[])

关于Java 全屏模式对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115848/

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