Hei*_*bug 3 java size swing jdialog
我正在使用JOptionPane.showOptionDialog来显示JDialog。我想知道如何:
我的代码如下:
JPanel panel; //my JPanel built with dialog contents
int ret = JOptionPane.showOptionDialog(myFrame,
panel,
"titel",
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE,
null,
options,
options[1]);
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式构建JDialog获得所需的结果:
JDialog dialog = new JDialog(panel);
dialog.setResizable(true);
dialog.setSize(800,600);
dialog.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
最后一个解决方案的问题是我无法获得返回值。
编辑:响应@camickr的观察:
为什么需要设置首选尺寸?如果正确构建面板,则应以其首选大小显示它。
我不确定在这一点上是否完全了解Swing。问题是,例如,我正在通过JDialog显示使用JFreeChart构建的ChartPanel。现在,我假设面板具有自己的首选大小,但我希望看到更大的面板。没有显式使用setPreferredSize()怎么办?
阅读JOptionPane API。搜索“直接使用”。它显示了如何直接访问选项窗格使用的对话框,并且您可以
我读了它,但找不到正确的方法来了解JDialog上按下了哪个按钮(确定或取消)。
这种使用HierarchyListener来获取JOptionPane的访问的技巧也可以:
http://blogs.oracle.com/scblog/entry/tip_making_joptionpane_dialog_resizable
// TIP: Make the JOptionPane resizable using the HierarchyListener
pane.addHierarchyListener(new HierarchyListener() {
public void hierarchyChanged(HierarchyEvent e) {
Window window = SwingUtilities.getWindowAncestor(pane);
if (window instanceof Dialog) {
Dialog dialog = (Dialog)window;
if (!dialog.isResizable()) {
dialog.setResizable(true);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9453 次 |
| 最近记录: |