Java弹簧布局管理器使用方法详解
由SpringLayout类实现的布局管理器称为弹簧布局管理器。利用该布局管理器管理组件,当改变窗体的大小时,能够在不改变组件间相对位置的前提下自动调整组件大小,使组件依旧布满整个窗体,从而保证了窗体的整体效果。下面,通过一个实例来看看弹簧布局管理器的使用方法和效果。
弹簧布局管理器以容器和组件的边缘为操作对象,通过为组件和容器边缘以及组件和组件边缘建立约束,实现对组件布局的管理。通过方法putConstraint(Stringe1,Conponetc1,intpad,Stringe2,Componetc2)可以为各边之间建立约束,该方法的入口参数说明如下:
c1:需要参考的组件对象;
c2:需要参考的组件对象的具体需要参考的边;
e1:被参考的组件对象;
e2:被参考的组件对象的具体被参考的边;
pad:两条边之间的距离,即两个组件之间的间距。
有点绕,其实很好理解。
实例1:使用弹簧布局管理器。
本实例利用弹簧布局管理器实现窗体,在调整窗体的大小后,组件仍会布满整个窗体,并且组件间的相对位置并不会改变。源码:
importjava.awt.Container;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
importjavax.swing.Spring;
importjavax.swing.SpringLayout;
publicclassSpringLayout_3extendsJFrame{
privatestaticfinallongserialVersionUID=-6045918631932051025L;
publicSpringLayout_3(){
//TODOAuto-generatedconstructorstub
Containercontainer=getContentPane();
SpringLayoutspringLayout=newSpringLayout();
container.setLayout(springLayout);
JLabeltopicLabel=newJLabel("主题:");
JLabelcontentLabel=newJLabel("内容:");
finalJTextFieldtextField=newJTextField(30);
JTextAreatextArea=newJTextArea(3,30);
JScrollPanescrollPane=newJScrollPane();
scrollPane.setViewportView(textArea);
textArea.setLineWrap(true);
finalJButtonconfirmButton=newJButton("取消");
JButtoncancelButton=newJButton("确认");
Springst=Spring.constant(10);
Springst2=Spring.constant(30);
container.add(topicLabel);
springLayout.putConstraint(SpringLayout.NORTH,topicLabel,st,
SpringLayout.NORTH,container);
springLayout.putConstraint(SpringLayout.WEST,topicLabel,st,
SpringLayout.WEST,container);
container.add(textField);
springLayout.putConstraint(SpringLayout.WEST,textField,st2,
SpringLayout.EAST,topicLabel);
springLayout.putConstraint(SpringLayout.NORTH,textField,0,
SpringLayout.NORTH,topicLabel);
springLayout.putConstraint(SpringLayout.EAST,textField,Spring.minus(st),
SpringLayout.EAST,container);
container.add(contentLabel);
springLayout.putConstraint(SpringLayout.WEST,contentLabel,0,
SpringLayout.WEST,topicLabel);
springLayout.putConstraint(SpringLayout.NORTH,contentLabel,st,
SpringLayout.SOUTH,topicLabel);
container.add(scrollPane);
springLayout.putConstraint(SpringLayout.NORTH,scrollPane,0,
SpringLayout.NORTH,contentLabel);
springLayout.putConstraint(SpringLayout.WEST,scrollPane,0,
SpringLayout.WEST,textField);
springLayout.putConstraint(SpringLayout.EAST,scrollPane,Spring.minus(st),
SpringLayout.EAST,container);
container.add(confirmButton);
springLayout.putConstraint(SpringLayout.SOUTH,scrollPane,Spring.minus(st),
SpringLayout.NORTH,confirmButton);
springLayout.putConstraint(SpringLayout.EAST,confirmButton,Spring.minus(st),
SpringLayout.EAST,container);
springLayout.putConstraint(SpringLayout.SOUTH,confirmButton,Spring.minus(st),
SpringLayout.SOUTH,container);
container.add(cancelButton);
springLayout.putConstraint(SpringLayout.EAST,cancelButton,Spring.minus(st),
SpringLayout.WEST,confirmButton);
springLayout.putConstraint(SpringLayout.NORTH,cancelButton,0,
SpringLayout.NORTH,confirmButton);
//makethetextfieldfocusedeverytimethewindowisactivated
addWindowFocusListener(newWindowAdapter(){
@Override
publicvoidwindowGainedFocus(WindowEvente){
//TODOAuto-generatedmethodstub
textField.requestFocus();
}
});
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
SpringLayout_3frame=newSpringLayout_3();
frame.setTitle("使用弹簧布局管理器");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100,100,600,300);
}
}
总结
以上就是弹簧布局管理器的使用方法及实例,喜欢的同学快去试试效果吧。
感谢大家对毛票票的支持!