SpringLayout弹簧锚定显示效果,putconstraint()

这两天在研究SpringLayout的弹簧的效果,搞了我好久。本来打算放弃的,好在最后还是静下心来重新慢慢研究,以下是我的研究结果,转载的请注明出处。

编译环境:Netbeans 6.1

注:最好结合各语句画一下图,重点关注弹簧的锚定方向,仔细观察,看看在哪些情况下有得到想要的效果,哪些情况下没有,并且看看把多条语句结合起来的显示效果如何。多给点耐心,就能看出些端倪。

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package showspringlayout1;

/*
* Main.java
*
* Created on 2009年8月2日, 上午12:31
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

import javax.swing.*;
import java.awt.*;

/**
*
* @author Administrator
*/
public class Main extends JApplet{
    
    /** Creates a new instance of Main */
    public Main() {
        SpringLayout springLayout = new SpringLayout();
        JPanel jPanel = new JPanel(springLayout);
        JButton jbt = new JButton("ok");
        JButton jbt1 = new JButton("ok1");
        JButton jbt2 = new JButton("ok2");
        JButton jbt3 = new JButton("ok3");
        JButton jbt4 = new JButton("ok4"); 
        JButton jbt5 = new JButton("ok5"); 
        JButton jbt6 = new JButton("can"); 
        
        JButton jbt7 = new JButton("try1"); 
        JButton jbt8 = new JButton("try2"); 
        JButton jbt9 = new JButton("try 3"); 
        
        
          //jbt.setSize(400, 200);
        //jPanel.setSize(200,300);
        
       // jPanel.add(jbt);
        
        //jPanel.add(jbt6);
        
      /*
         jPanel.add(jbt7);
         jPanel.add(jbt8);
         jPanel.add(jbt9);
       */
        
        
      /** jPanel.add(jbt1);
        jPanel.add(jbt2);
        jPanel.add(jbt3);
        jPanel.add(jbt4);
        jPanel.add(jbt5);
        //@@
        */ 
        Spring spring = Spring.constant(0,20,40);//(20,90,900);
        
        //使用下述语句时,注意画图观察各组件边线之间的弹簧的锚定方向。
        //有些语句结合起来不会产生新效果。
        //任意两条边之间只能放置一个弹簧,如果放置多个,只取最后放置者,但是一条边可以连接多个不同的弹簧。
        
//springLayout.putConstraint(SpringLayout.WEST,jbt,spring,SpringLayout.WEST,jPanel);//1、单独用时,从左向右移动了一点。。。
//springLayout.putConstraint(SpringLayout.EAST,jbt,spring,SpringLayout.EAST,jPanel);//2、单独用时,去到右边了。。。部分消失了。。。
//springLayout.putConstraint(SpringLayout.WEST,jPanel,spring,SpringLayout.WEST,jbt);//3、单独用时,无作用。。。
//springLayout.putConstraint(SpringLayout.EAST,jPanel,spring,SpringLayout.EAST,jbt);//4、单独用时,无作用。。。
             

       //只使用ok按钮时,1、4一起用时,ok按钮居中。
       //而2、3一起用时,或3、4一起用时,或2、4一起用时,或1、2一起用时,或1、3一起用时,无此效果。


/**
//可以与1、4一起用,两个按钮会重叠。
springLayout.putConstraint(SpringLayout.WEST,jbt6,spring,SpringLayout.WEST,jPanel);//单独用时,从左向右移动了一点。。。
springLayout.putConstraint(SpringLayout.EAST,jPanel,spring,SpringLayout.EAST,jbt6);//单独用时,无作用。。。
   */

/*
//证明一条边可以连接多个弹簧,但是任意两条边之间只能放置一个弹簧(放置多个则取最后放置者来产生显示效果)。
springLayout.putConstraint(SpringLayout.WEST,jbt7,spring,SpringLayout.WEST,jPanel);//
springLayout.putConstraint(SpringLayout.WEST,jbt8,spring,SpringLayout.WEST,jbt7);//
springLayout.putConstraint(SpringLayout.WEST,jbt9,spring,SpringLayout.WEST,jbt7);//
springLayout.putConstraint(SpringLayout.EAST,jPanel,spring,SpringLayout.WEST,jbt8);//
springLayout.putConstraint(SpringLayout.EAST,jPanel,spring,SpringLayout.WEST,jbt9);//
*/
        
        
        
    // springLayout.putConstraint(SpringLayout.SOUTH,jPanel,spring,SpringLayout.SOUTH,jbt);//5、单独用时,无作用。。。
     // springLayout.putConstraint(SpringLayout.NORTH,jPanel,spring,SpringLayout.NORTH,jbt);//6、单独用时,无作用。。。
     // springLayout.putConstraint(SpringLayout.SOUTH,jbt,spring,SpringLayout.SOUTH,jPanel);//7、单独用时,去到下面了。。。部分消失了。。。
    //springLayout.putConstraint(SpringLayout.NORTH,jbt,spring,SpringLayout.NORTH,jPanel);// 8、单独用时,从上向下移动了一点。。。
      
        //只使用ok按钮时,5、8一起用时,ok按钮居中。
        //而6、7一起用时,或7、8一起用时,或6、8一起用时,或5、6一起用时,或5、7一起用时,无此效果。
/**
    //下列二句一起用时,右边的弹簧力量比左边的强一倍。     
     springLayout.putConstraint(SpringLayout.WEST,jbt,spring,SpringLayout.WEST,jPanel);//单独用时,从左向右移动了一点。。。
     springLayout.putConstraint(SpringLayout.EAST,jPanel,Spring.sum(spring, spring),SpringLayout.EAST,jbt);//单独用时,无作用。。。
*/
        
        
/**
//&&
springLayout.putConstraint(SpringLayout.WEST,jbt,spring,SpringLayout.WEST,jPanel);//
springLayout.putConstraint(SpringLayout.WEST,jbt1,spring,SpringLayout.EAST,jbt);//
springLayout.putConstraint(SpringLayout.WEST,jbt2,spring,SpringLayout.EAST,jbt1);//
springLayout.putConstraint(SpringLayout.WEST,jbt3,spring,SpringLayout.EAST,jbt2);//
springLayout.putConstraint(SpringLayout.WEST,jbt4,spring,SpringLayout.EAST,jbt3);//
springLayout.putConstraint(SpringLayout.WEST,jbt5,spring,SpringLayout.EAST,jbt4);//
springLayout.putConstraint(SpringLayout.EAST,jPanel,spring,SpringLayout.EAST,jbt5);//       
//注释掉&&之前的语句,而与@@一起用时,看见各按钮整齐排列成行 。。。
*/      
        
        
      
        
        JFrame jFrame = new JFrame();
        jFrame.add(jPanel,BorderLayout.CENTER);
     jFrame.setSize(300,500);
   // jFrame.pack();
        jFrame.setVisible(true);
        
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    Main main = new Main();
    //JFrame jFrame = new JFrame();
    
   // jFrame
    
    }
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值