弱弱的一个问题!100分 !!

wangqiu 2006-12-18 09:00:44
public class MainApp {
boolean packFrame = false;

/**
* Construct and show the application.
*/
public MainApp() {
MainFrame frame = new MainFrame();

//frame.setVisible(true);
// Validate frames that have preset sizes
// Pack frames that have useful preferred size info, e.g. from their layout
if (packFrame) {
frame.pack();
} else {
frame.validate();
}

// Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {

frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2 ,
(screenSize.height - frameSize.height) / 2);

frame.setVisible(true);
}

/**
* Application entry point.
*
* @param args String[]
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
//SysUtil.SysInit();
System.out.println("我是你爷爷");
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
} catch (Exception exception) {
exception.printStackTrace();
}

new MainApp();
}
});
}
}

这段代码中
if (packFrame) {
frame.pack();
} else {
frame.validate();
}

// Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {

frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2 ,
(screenSize.height - frameSize.height) / 2);

1、这段比较窗体初始化的代码在什么情况下使用,觉得没有也可以啊,我是菜鸟,请大侠指点?

2、在这段代码中
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
//SysUtil.SysInit();
System.out.println("我是你爷爷");
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
} catch (Exception exception) {
exception.printStackTrace();
}

new MainApp();
}
});

为什么要要用这样一个匿名线程,来实现窗体的的调用??


以上问题比较菜,请大家指点!!
...全文
226 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyetao08 2006-12-19
  • 打赏
  • 举报
回复
eclipse,jbuilder是直接new一个对象的.........
wangqiu 2006-12-19
  • 打赏
  • 举报
回复
我知道是这个意思,只是觉得奇怪,呵呵!!不过是不是大多数情况下,都不会出现窗口过大后你没法操作的问题????

hdhmail2000 2006-12-19
  • 打赏
  • 举报
回复
1、// Center the window,注释里都写好了,还有解决了窗口过大后你没法操作的问题,让你的窗口顶多与屏幕一样大,也就是最大化的时候。这个问题很有必要,我在linux下面打开忘了是netbeans还是eclipse时,窗体就是大于了屏幕,没法进行鼠标操作。
2、我也支持这个:如果单独就是这个程序应该是没什么用处的。但是如果程序很大的情况下,有多个任务或是线程在运行的情况,可以防止block线程、死锁之类的问题。
diggywang 2006-12-18
  • 打赏
  • 举报
回复
其实区别真的不是很大,现在Netbeans自动生成代码就是这样的,呵!像eclipse,jbuilder是直接new一个对象,没什么区别。不过如果是jdialog,就有用些,有时你并不想让整个单个线程一口气跑完,需要传递某些值什么的就好用了
lixiaoxue85 2006-12-18
  • 打赏
  • 举报
回复
SwingUtilities.invokeLater实现了异步调用 相当于一个人在跑步 然后把棒子交给另一个人
让他去跑完后面的路程 然后自己去做别的事情
和他相对的是SwingUtilities.invokeAndWait 这相当把棒子交给另一个人 让他去跑后面的路
但是还是会等待他跑回来 再去做自己的事情
作用就是异步 想当于搞了个新线程去做另外件事情
fool_leave 2006-12-18
  • 打赏
  • 举报
回复
直接调用也可以
xiangaxiang 2006-12-18
  • 打赏
  • 举报
回复
如果单独就是这个程序应该是没什么用处的。但是如果程序很大的情况下,有多个任务或是线程在运行的情况,可以防止block线程、死锁之类的问题。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧