测试一下pack()在不同layout上的效果
2016-07-15 15:08
357 查看
为什么在有些情况下使用pack(),只能看见标题栏,内容要放大才能看见呢?
这个问题跟你使用的layout有关。
先看一下关于pack()的解释:
Java中的pack()方法是什么意思?
悬赏分:0 - 解决时间:2008-9-1 23:02Java中的pack()方法是什么意思? 提问者: junqin14 - 童生
一级 最佳答案检举关于pack()方法 在 Frame 类中有一个从类 java.awt.Window 继承的方法 pack() show() 同样也继承自 java.awt.Window public void pack() 调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该
Window。 5回答者: ttpsan520 - 秀才
二级
2008-9-1 17:13
java关于Frame类的pack()方法
悬赏分:10 - 解决时间:2009-3-18 18:30先声明了一个Frame类的实例f,和一个Button类的示例b,然后f.add(b);运行程序之后窗口只有一个标题栏,没有按钮.然后书上加了个f.pack();语句就能显示按钮了,这是为什么?pack方法是干什么用的?
提问者: 宅与不宅 - 试用期
一级 最佳答案检举f.pack()做了这样一件事f.setSize(f.getPreferredSize());在你没加f.pack()之前,f窗体的大小是(0,0)当你加了以后,f的大小会被设置为恰当大小,也就是prefrredSize 1回答者: htaohongtao - 助理
二级
2009-3-18 12:05我来评论>>提问者对于答案的评价:谢谢
下面是我的调试记录:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testpackmethod;
import javax.swing.*;
import java.awt.*;
/**
*
* @author Administrator
*/
public class Main {
/**
* @param args the command line arguments
*/
Main() {
JFrame jFrame = new JFrame("Test pack()");
JButton jbt = new JButton("ok");
JPanel jPanel = new JPanel();
// jFrame.setLayout(new FlowLayout());//可看见按钮居中显示,放大后居上方中央
// jFrame.add(jbt);
// jFrame.setLayout(new BorderLayout());//可看见按钮占据中央,并且可延伸
// jFrame.add(jbt);
// jFrame.setLayout(new GridLayout(1,1));//可看见按钮,效果同上
// jFrame.add(jbt);
// jFrame.setLayout(new SpringLayout());//放大后才可看见按钮居左上方,未放大时,整个框架都被pack up了。
// jFrame.add(jbt);
/*
//添加两个弹簧后,或许你会认为不需要再放大就能看见了,但是很遗憾,仍需要放大,然后才能看见按钮,你会发现它居上方中央
jFrame.add(jPanel);
SpringLayout springLayout = new SpringLayout() ;
jPanel.setLayout( springLayout );//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
jPanel.add(jbt);
Spring spring = Spring.constant(0,10,20);
springLayout.putConstraint(SpringLayout.WEST, jbt, spring, SpringLayout.WEST, jPanel);
springLayout.putConstraint(SpringLayout.EAST, jPanel, spring, SpringLayout.EAST, jbt);
*/
/*
//再添加两个弹簧后,看看效果如何,发现看得见按钮了,而且不论放大与否,都是居中显示
jFrame.add(jPanel);
SpringLayout springLayout = new SpringLayout() ;
jPanel.setLayout( springLayout );//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
jPanel.add(jbt);
Spring spring = Spring.constant(0,10,20);
springLayout.putConstraint(SpringLayout.WEST, jbt, spring, SpringLayout.WEST, jPanel);
springLayout.putConstraint(SpringLayout.EAST, jPanel, spring, SpringLayout.EAST, jbt);
springLayout.putConstraint(SpringLayout.NORTH, jbt, spring, SpringLayout.NORTH, jPanel);
springLayout.putConstraint(SpringLayout.SOUTH, jPanel, spring, SpringLayout.SOUTH, jbt);
*/
/*
//再set一下frame size,注意要把后面的pack语句暂时注释掉,再来看看效果如何,size变化了,而且不论放大与否,都是居中显示
jFrame.setSize(1000,618);
jFrame.add(jPanel);
SpringLayout springLayout = new SpringLayout() ;
jPanel.setLayout( springLayout );//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
jPanel.add(jbt);
Spring spring = Spring.constant(0,10,20);
springLayout.putConstraint(SpringLayout.WEST, jbt, spring, SpringLayout.WEST, jPanel);
springLayout.putConstraint(SpringLayout.EAST, jPanel, spring, SpringLayout.EAST, jbt);
springLayout.putConstraint(SpringLayout.NORTH, jbt, spring, SpringLayout.NORTH, jPanel);
springLayout.putConstraint(SpringLayout.SOUTH, jPanel, spring, SpringLayout.SOUTH, jbt);
*/
//jFrame.setLayout(new GridBagLayout());//可看见按钮
//jFrame.add(jbt);
// jFrame.setLayout(new CardLayout());//可看见按钮,居中显示,而且不论放大与否,都会占据所有空间
//jFrame.add(jbt, "1");
//jFrame.add(jPanel);
//jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.X_AXIS));//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
//jPanel.add(jbt);//居左显示,放大后居左而且占中间显示
// jFrame.add(jPanel);
// jPanel.setLayout(new OverlayLayout(jPanel) );//可看见按钮//注意:OverlayLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
// jPanel.add(jbt);//效果竟然同上,很意外
jFrame.pack();
jFrame.setVisible(true);//don't forget!
}
public static void main(String[] args) {
// TODO code application logic here
Main main = new Main();
}
}
收藏于 2009-08-03
这个问题跟你使用的layout有关。
先看一下关于pack()的解释:
Java中的pack()方法是什么意思?
悬赏分:0 - 解决时间:2008-9-1 23:02Java中的pack()方法是什么意思? 提问者: junqin14 - 童生
一级 最佳答案检举关于pack()方法 在 Frame 类中有一个从类 java.awt.Window 继承的方法 pack() show() 同样也继承自 java.awt.Window public void pack() 调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该
Window。 5回答者: ttpsan520 - 秀才
二级
2008-9-1 17:13
java关于Frame类的pack()方法
悬赏分:10 - 解决时间:2009-3-18 18:30先声明了一个Frame类的实例f,和一个Button类的示例b,然后f.add(b);运行程序之后窗口只有一个标题栏,没有按钮.然后书上加了个f.pack();语句就能显示按钮了,这是为什么?pack方法是干什么用的?
提问者: 宅与不宅 - 试用期
一级 最佳答案检举f.pack()做了这样一件事f.setSize(f.getPreferredSize());在你没加f.pack()之前,f窗体的大小是(0,0)当你加了以后,f的大小会被设置为恰当大小,也就是prefrredSize 1回答者: htaohongtao - 助理
二级
2009-3-18 12:05我来评论>>提问者对于答案的评价:谢谢
下面是我的调试记录:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testpackmethod;
import javax.swing.*;
import java.awt.*;
/**
*
* @author Administrator
*/
public class Main {
/**
* @param args the command line arguments
*/
Main() {
JFrame jFrame = new JFrame("Test pack()");
JButton jbt = new JButton("ok");
JPanel jPanel = new JPanel();
// jFrame.setLayout(new FlowLayout());//可看见按钮居中显示,放大后居上方中央
// jFrame.add(jbt);
// jFrame.setLayout(new BorderLayout());//可看见按钮占据中央,并且可延伸
// jFrame.add(jbt);
// jFrame.setLayout(new GridLayout(1,1));//可看见按钮,效果同上
// jFrame.add(jbt);
// jFrame.setLayout(new SpringLayout());//放大后才可看见按钮居左上方,未放大时,整个框架都被pack up了。
// jFrame.add(jbt);
/*
//添加两个弹簧后,或许你会认为不需要再放大就能看见了,但是很遗憾,仍需要放大,然后才能看见按钮,你会发现它居上方中央
jFrame.add(jPanel);
SpringLayout springLayout = new SpringLayout() ;
jPanel.setLayout( springLayout );//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
jPanel.add(jbt);
Spring spring = Spring.constant(0,10,20);
springLayout.putConstraint(SpringLayout.WEST, jbt, spring, SpringLayout.WEST, jPanel);
springLayout.putConstraint(SpringLayout.EAST, jPanel, spring, SpringLayout.EAST, jbt);
*/
/*
//再添加两个弹簧后,看看效果如何,发现看得见按钮了,而且不论放大与否,都是居中显示
jFrame.add(jPanel);
SpringLayout springLayout = new SpringLayout() ;
jPanel.setLayout( springLayout );//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
jPanel.add(jbt);
Spring spring = Spring.constant(0,10,20);
springLayout.putConstraint(SpringLayout.WEST, jbt, spring, SpringLayout.WEST, jPanel);
springLayout.putConstraint(SpringLayout.EAST, jPanel, spring, SpringLayout.EAST, jbt);
springLayout.putConstraint(SpringLayout.NORTH, jbt, spring, SpringLayout.NORTH, jPanel);
springLayout.putConstraint(SpringLayout.SOUTH, jPanel, spring, SpringLayout.SOUTH, jbt);
*/
/*
//再set一下frame size,注意要把后面的pack语句暂时注释掉,再来看看效果如何,size变化了,而且不论放大与否,都是居中显示
jFrame.setSize(1000,618);
jFrame.add(jPanel);
SpringLayout springLayout = new SpringLayout() ;
jPanel.setLayout( springLayout );//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
jPanel.add(jbt);
Spring spring = Spring.constant(0,10,20);
springLayout.putConstraint(SpringLayout.WEST, jbt, spring, SpringLayout.WEST, jPanel);
springLayout.putConstraint(SpringLayout.EAST, jPanel, spring, SpringLayout.EAST, jbt);
springLayout.putConstraint(SpringLayout.NORTH, jbt, spring, SpringLayout.NORTH, jPanel);
springLayout.putConstraint(SpringLayout.SOUTH, jPanel, spring, SpringLayout.SOUTH, jbt);
*/
//jFrame.setLayout(new GridBagLayout());//可看见按钮
//jFrame.add(jbt);
// jFrame.setLayout(new CardLayout());//可看见按钮,居中显示,而且不论放大与否,都会占据所有空间
//jFrame.add(jbt, "1");
//jFrame.add(jPanel);
//jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.X_AXIS));//可看见按钮//注意:BoxLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
//jPanel.add(jbt);//居左显示,放大后居左而且占中间显示
// jFrame.add(jPanel);
// jPanel.setLayout(new OverlayLayout(jPanel) );//可看见按钮//注意:OverlayLayout can't be shared//得用JPanel。。。不能直接用JFrame。。。
// jPanel.add(jbt);//效果竟然同上,很意外
jFrame.pack();
jFrame.setVisible(true);//don't forget!
}
public static void main(String[] args) {
// TODO code application logic here
Main main = new Main();
}
}
收藏于 2009-08-03
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之使用Http协议实现文件上传功能
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- Android布局的小窍门?
- Web布局连载——两栏固定布局(五)
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序