如何创建一个可用作内部对话框的自定义模式 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);
}
}