如何在屏幕上居中java.awt.FileDialog
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在屏幕上居中java.awt.FileDialog,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1967字,纯文字阅读大概需要3分钟。
内容图文
![如何在屏幕上居中java.awt.FileDialog](/upload/InfoBanner/zyjiaocheng/747/5367ac22076f485986fc4348100c4091.jpg)
我从来没有能够弄明白这个;通常的嫌疑人不起作用.
鉴于:
FileDialog dlg=null;
dlg=new FileDialog(owner,"Select File to Load",FileDialog.LOAD);
dlg.setFile(null);
dlg.setVisible(true);
有没有办法让对话框居中?
关键点在于setVisible(),调用线程被阻塞,直到对话框被解除;之前的任何定位似乎都被忽略了.
解决方法:
以下解决方案适用于SWT,也许它可以为AWT做诀窍……
当它显示当前shell左上角的对话框时,一个快速而肮脏的解决方案是创建一个新的,定位良好且不可见的shell并从中打开FileDialog.我用以下代码得到了一个可接受的结果:
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
public class CenteredFileDialog extends Dialog {
protected Shell shell;
public FileDialog dialog;
private int width = 560; // WinXP default
private int height = 420;
public CenteredFileDialog(Shell parent, int style) {
super(parent, style);
shell = new Shell(getParent(), SWT.APPLICATION_MODAL);
dialog = new FileDialog(shell, style);
}
public Object open() {
shell.setSize(width, height);
Rectangle parentBounds = getParent().getBounds();
shell.setLocation(
parentBounds.x + (parentBounds.width - width) / 2,
parentBounds.y + (parentBounds.height - height) / 2);
Object result = dialog.open();
shell.dispose();
return result;
}
}
该类可以这样使用:
CenteredFileDialog saveDialog = new CenteredFileDialog(getShell(), SWT.SAVE);
saveDialog.dialog.setFilterExtensions(new String[] { "*.txt" });
saveDialog.dialog.setFilterNames(new String[] { "Text (*.txt)" });
...
String f = (String)saveDialog.open();
if ( f != null ) {
name = f;
recentPath = saveDialog.dialog.getFilterPath();
}
该类仅部分解决了Windows平台的问题(在MacOS上,对话框仍以屏幕为中心;在Linux上我没有测试) – 第一次对话框显示相对于父shell(这是我们需要的)居中,并且“记得“它在屏幕上的绝对位置.通过后续调用,它总是弹出在同一个地方,即使主应用程序窗口移动了.
尽管奇怪,但从我的角度来看,新行为肯定比对话框的默认非职业性左上对接更好.
内容总结
以上是互联网集市为您收集整理的如何在屏幕上居中java.awt.FileDialog全部内容,希望文章能够帮你解决如何在屏幕上居中java.awt.FileDialog所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。