下面的代码当点击setSize的时候按钮的大小真的改了,但是按钮的大小改变不是会调用布局管理器的吗,所有不应该改变才对呀。
还有当改变位置时 布局管理器公布工作
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class dsfsd extends JFrame{
private JButton jb;
public dsfsd(){
super("fds");
setVisible(true);
jb=new JButton("fds");
add(jb);
pack();
jb.setSize(100,100);
jb.addActionListener(
new ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
jb.setSize(200,200);
jb.setLocation(100,100);
}
}
);
}
public static void main (String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception ex) {
}
new dsfsd();
}
}
还有当改变位置时 布局管理器公布工作
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class dsfsd extends JFrame{
private JButton jb;
public dsfsd(){
super("fds");
setVisible(true);
jb=new JButton("fds");
add(jb);
pack();
jb.setSize(100,100);
jb.addActionListener(
new ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
jb.setSize(200,200);
jb.setLocation(100,100);
}
}
);
}
public static void main (String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception ex) {
}
new dsfsd();
}
}
public SimpleTest(){
super("fds");
jb=new JButton("fds");
add(jb);
pack();
jb.setSize(100,100);
jb.addActionListener(
new ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
jb.setSize(200,200);
jb.setLocation(100,100);
}
}
);
setSize(500, 500);
setVisible(true);
}
因为我的布局管理器是默认的布局管理器,我想布局管理器应该能起到管理布局的作用,也就是如果真的管理了布局setsize函数应该不起作用,但是事实却相反,setsize函数轻易的剥夺了布局管理器的权限改变了布局。
看了源码看到当size改变的时候会调用布局管理器相关函数,但是为什么还是改变了按钮的大小呢?