![](/img/trans.png)
[英]Is there a definite Selenium solution to modal pop up dialogs in Internet Explorer with Java?
[英]Java Fullscreen Modal Dialogs
如何创建可用作内部对话框的自定义模态 JDialog? 用于 FullscreenExclusiveMode。
我有一个 JScrollPane(带有一个巨大的滚动条),里面装满了像这样的巨大按钮:
+----------------------+------+
| FOO | /\ |
|______________________+------+
| |______|
| BAR | |
|______________________| == |
| |______|
| BIZ | |
+______________________+------+
| | \/ |
|----------------------+------+
我需要用户使用巨大的滚动条滚动并点击一个特定的按钮到 select 它并关闭对话框。 该对话框处于全屏独占模式。 关闭按钮需要被禁用,并且它不需要有确定或取消按钮,无论他们单击哪个按钮都需要更新一个值,然后在对话框上调用 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
。
要从选项窗格中删除标准按钮,请使用空数组调用setOptions(Object[])
。
JOptionPane.showXXXDialog(...) 允许在创建自定义内部对话框时进行大量自定义。
尝试这个..
.
.
.
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");
fullscreenFrame.invalidate();
fullscreenFrame.repaint();
optionPane.setValue(button);
}
});
JInternalFrame frame = optionPane.createInternalFrame(panel, "Internal Dialog");
frame.getContentPane().removeAll();
JPanel pnl = new JPanel(new BorderLayout());
pnl.add( button, BorderLayout.SOUTH );
pnl.add( new JScrollBar(), BorderLayout.CENTER );
frame.getContentPane().add( pnl );
frame.setVisible(true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.